Use Case

Scale Multilingual Sites for 20+ Clients with SiteLocaleAI

Published September 15, 2026

Scale Multilingual Sites for 20+ Clients with SiteLocaleAI

Scaling Multilingual Sites for 20+ Clients with SiteLocaleAI

TL;DR – Use SiteLocaleAI’s drop‑in JavaScript library, self‑hosted LLM keys, and volume‑licensing to manage dozens of client sites from a single repository. Leverage the CLI for SEO pre‑rendering and the WordPress plugin for non‑Node environments.


1. Why a Volume‑Licensing Model?

Agencies often juggle many domains, each with its own branding, language set, and pricing strategy. A per‑site license quickly becomes expensive and administratively heavy. SiteLocaleAI’s volume licensing lets you purchase a bulk seat package (e.g., 50‑seat Indie or 200‑seat Starter) and allocate those seats across any number of client projects. The key benefits are:

  • Predictable cost – One invoice for all sites.
  • Centralized key management – Store LLM API keys in a vault and reference them per client.
  • Unified updates – Upgrade the library once and all sites benefit.

2. Repository Structure for Multiple Clients

A monorepo works best. Below is a sample folder layout:

/agency-root
├─ /clients
│  ├─ /client-a
│  │   ├─ index.html
│  │   └─ locale.config.js
│  ├─ /client-b
│  │   ├─ index.html
│  │   └─ locale.config.js
│  └─ …
├─ /shared
│  └─ siteLocale.js   # Drop‑in JS library (npm install sitelocaleai)
├─ .env                # Central LLM keys & licensing token
└─ package.json

Each locale.config.js contains client‑specific settings (languages, currency, LLM model). The shared siteLocale.js is imported by every site.


3. Setting Up the Environment

Create a .env file at the repo root:

# SiteLocaleAI licensing token – obtain from the dashboard
SITELOCALEAI_LICENSE=YOUR_VOLUME_LICENSE_TOKEN

# LLM API keys (you can rotate per client if needed)
OPENAI_API_KEY=sk-…
ANTHROPIC_API_KEY=sk-…

Load these variables in your build scripts using dotenv:

// shared/siteLocale.js
import { config } from 'dotenv';
config();

export const LLM_KEYS = {
  openai: process.env.OPENAI_API_KEY,
  anthropic: process.env.ANTHROPIC_API_KEY,
};

export const LICENSE_TOKEN = process.env.SITELOCALEAI_LICENSE;

4. Drop‑In JavaScript for Each Client

In each client’s index.html add the library script and initialise it with the client’s config:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Client A – Home</title>
  <script src="/shared/siteLocale.js"></script>
  <script type="module" src="/clients/client-a/locale.config.js"></script>
</head>
<body>
  <h1 data-sloc="title">Welcome</h1>
  <p data-sloc="description">Explore our products.</p>
  <span data-sloc-price="price">$49.99</span>
</body>
</html>

locale.config.js tells SiteLocaleAI which languages to generate and how to round prices:

// clients/client-a/locale.config.js
import { initSiteLocale } from '../../shared/siteLocale.js';

initSiteLocale({
  licenseToken: LICENSE_TOKEN,
  llm: {
    provider: 'openai',
    model: 'gpt-4o-mini',
    apiKey: LLM_KEYS.openai,
  },
  languages: ['en', 'es', 'de', 'fr'],
  currency: {
    code: 'EUR',
    rounding: 'psychological', // e.g., €9.99 → €9.95
  },
});

The library automatically replaces any element with data-sloc or data-sloc-price attributes.


5. SEO Pre‑Rendering with the CLI

Search engines need fully rendered HTML. SiteLocaleAI’s CLI can pre‑render every language version and write static files for the crawler.

# Install the CLI globally (once per agency)
npm i -g @sitelocaleai/cli

# Run pre‑rendering for all clients
sitelocaleai prerender \
  --src ./clients \
  --out ./dist \
  --license $SITELOCALEAI_LICENSE \
  --openai-key $OPENAI_API_KEY

The CLI reads each locale.config.js, calls the LLM API, and writes index.es.html, index.de.html, etc., into dist/client-a/. Deploy the dist folder to your static host (Vercel, Netlify, S3, etc.).

Tip: Add a post‑commit hook to run the pre‑render automatically, ensuring new content is always indexed.


6. WordPress Clients Without Node.js

Some agencies manage WordPress sites where Node isn’t available. SiteLocaleAI offers a WordPress plugin that bundles the JS library and provides a settings page for the license token and LLM keys.

  1. Install the plugin via the WordPress admin.
  2. In Settings → SiteLocaleAI, paste your license token and API keys.
  3. Use the shortcode [sitelocale lang="es"] to wrap translatable content.
  4. For price rounding, add the attribute data-sloc-price to any element.

The plugin also includes a WP‑CLI command wp sitelocale prerender that works similarly to the Node CLI, generating static HTML for Googlebot.


7. Managing Seats Across Clients

SiteLocaleAI’s dashboard shows a real‑time seat counter. To allocate seats:

  • Create a “client group” in the dashboard (e.g., Client A). Assign the number of seats you want to reserve.
  • In each locale.config.js, add seatGroup: 'client-a'.
  • The library validates the group against the license token at runtime, preventing over‑usage.
initSiteLocale({
  licenseToken: LICENSE_TOKEN,
  seatGroup: 'client-a',
  // …other options
});

If a client exceeds its allocation, the library falls back to a graceful degradation mode: it serves the original source language and logs a warning.


8. Monitoring & Analytics

SiteLocaleAI ships a lightweight analytics endpoint that records:

  • Translation latency per language.
  • Price rounding accuracy.
  • SEO crawl errors.

Integrate it with your existing monitoring stack:

import { enableAnalytics } from '../../shared/siteLocale.js';

enableAnalytics({
  endpoint: 'https://analytics.sitelocaleai.com/collect',
  clientId: 'agency-123',
});

Review the data in the dashboard to optimise model selection (e.g., switch from gpt-4o-mini to claude-3.5-sonnet for higher quality).


9. Quick Checklist for Agency Rollout

✅ Item
1 Purchase a volume‑license that covers the total seat count.
2 Store the license token and LLM keys in a secure .env.
3 Set up a monorepo with a shared siteLocale.js and per‑client configs.
4 Add data-sloc attributes to all translatable UI strings.
5 Run the CLI pre‑render for SEO before each deployment.
6 For WordPress sites, install the plugin and use shortcodes.
7 Assign seat groups in the dashboard and reference them in config.
8 Enable analytics and monitor translation health.

10. Ready to Scale?

With SiteLocaleAI you can turn a sprawling portfolio of 20+ multilingual websites into a single, maintainable codebase—while keeping costs predictable and SEO performance strong. Try SiteLocaleAI today and see how quickly you can launch localized experiences for every client.


Read the full API reference • Explore the CLI guide