Boost International SEO for Astro Sites with SiteLocaleAI
International traffic is a goldmine for static sites built with Astro. The challenge is delivering fully translated, SEO‑friendly pages for each locale without sacrificing performance. SiteLocaleAI solves this with a drop‑in JavaScript library, price localization, and a CLI that pre‑renders translated pages for search engines. In this guide we’ll walk through setting up a multilingual Astro site for 10 locales, configuring price rounding, and ensuring every page is indexed correctly.
1. Prerequisites
- Astro 4.x project (any framework‑agnostic site)
- Node.js 18+ (for the CLI only)
- API keys for your preferred LLM (Claude, GPT‑4o‑mini, etc.)
- Access to the SiteLocaleAI npm package:
npm i @sitelocaleai/js
Tip: The SiteLocaleAI library is framework‑agnostic, so you can use it with React, Vue, Svelte, or plain HTML inside Astro components.
2. Install the Library
# From your Astro project root
npm i @sitelocaleai/js
Create a small wrapper that loads the library and injects translation functions into the global scope. This makes it easy to call from any component.
// src/lib/locale.js
import { SiteLocaleAI } from '@sitelocaleai/js';
const locale = new SiteLocaleAI({
apiKey: import.meta.env.SITELOCALEAI_API_KEY, // keep it secret!
defaultLocale: 'en',
supportedLocales: ['en', 'es', 'fr', 'de', 'it', 'pt', 'nl', 'sv', 'pl', 'ja'],
priceRounding: {
// Psychological rounding per currency
USD: 0.99,
EUR: 0.95,
GBP: 0.99,
// add more as needed
},
});
export default locale;
3. Translate Content in Astro Components
SiteLocale can provides a t helper that returns the translated string for the current locale. Wrap any user‑visible text with it.
---
import locale from '../lib/locale.js';
---
<h1>{locale.t('Welcome to our shop')}</h1>
<p>{locale.t('Find the best products at unbeatable prices.')}</p>
For dynamic data such as product titles fetched from an API, you can translate on the fly:
// src/components/ProductCard.astro
---
import locale from '../lib/locale.js';
const { product } = Astro.props;
---
<div class="card">
<h2>{locale.t(product.title)}</h2>
<p>{locale.formatPrice(product.price, product.currency)}</p>
</div>
The formatPrice method applies the psychological rounding defined in the configuration and formats the number according to locale‑specific conventions.
4. SEO‑Friendly Pre‑Rendering with the CLI
Search engines need fully rendered HTML for each locale. SiteLocaleAI’s CLI crawls your site, translates every page, and writes static HTML files that can be served directly.
# Install the CLI globally (optional)
npm i -g @sitelocaleai/cli
# Run the pre‑render for all locales
sitelocaleai prerender \
--src ./dist \
--out ./dist-localized \
--locales en,es,fr,de,it,pt,nl,sv,pl,ja
The CLI does three things:
1. Detects all routes in the dist folder.
2. Calls your LLM API to translate each page’s text nodes.
3. Writes a locale‑specific HTML file (e.g., /es/index.html).
Because the output is static HTML, you retain Astro’s lightning‑fast performance while delivering SEO‑ready content.
5. Updating Sitemap and Robots.txt
After pre‑rendering, generate a sitemap that includes every locale version.
sitelocaleai sitemap \
--base https://example.com \
--locales en,es,fr,de,it,pt,nl,sv,pl,ja \
--out ./dist-localized/sitemap.xml
Add the sitemap to robots.txt:
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
Search engines will now discover and index each language page, boosting international visibility.
6. WordPress‑Style Integration (Optional)
If part have a WordPress headless CMS feeding content into Astro, you can skip the Node.js build step by using the SiteLocaleAI WordPress plugin. The plugin translates content at the source and stores locale‑specific fields, which Astro then pulls via the REST API. No extra Node.js runtime is required on the WordPress side.
7. Testing Your Locales
Run a local server pointing at the localized folder:
npx serve ./dist-localized
Visit http://localhost:5000/es/ and verify:
- Translated headings and paragraphs
- Correctly rounded prices (e.g., $19.99 instead of $20.00)
- Meta tags (<title>, <meta description>) are localized (SiteLocaleAI injects them automatically).
8. Monitoring and Continuous Deployment
Add a post‑build step in your CI pipeline to trigger the CLI whenever you push new content:
# .github/workflows/deploy.yml
name: Deploy Astro Site
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '20'
- run: npm ci
- run: npm run build
- run: |
npx @sitelocaleai/cli prerender \
--src ./dist \
--out ./dist-localized \
--locales en,es,fr,de,it,pt,nl,sv,pl,ja
- run: npm i -g netlify-cli
- run: netlify deploy --dir=./dist-localized --prod
This ensures every deployment ships the latest translations and SEO assets.
9. Resources & Further Reading
- Detailed integration guide: https://sitelocaleai.com/docs/astro-integration
- SEO pre‑rendering and sitemap generation: https://sitelocaleai.com/docs/seo-prerender
10. Ready to Go Global?
SiteLocaleAI lets you turn any Astro static site into a multilingual, SEO‑optimized powerhouse without sacrificing speed or control. Try it today – spin up a free Indie plan for $5, or upgrade to Starter, Growth, or Enterprise as your audience expands.
Happy translating!