@pico-intl-dev/astro
v1.0.7
Published
Astro integration for pico-intl - SSR-ready, zero-overhead i18n for Astro projects
Maintainers
Readme
@pico-intl-dev/astro
Astro integration and middleware helpers for pico-intl.
Status: stable v1 for the Astro static and middleware shapes covered by published npm adoption and production fixture tests.
Install
npm install @pico-intl-dev/core @pico-intl-dev/astro astroAstro integration
// astro.config.mjs
import { defineConfig } from 'astro/config';
import picoIntl from '@pico-intl-dev/astro';
export default defineConfig({
integrations: [
picoIntl({
locales: ['en', 'es'],
defaultLocale: 'en',
}),
],
});Component usage
---
import { getAstroT } from '@pico-intl-dev/astro';
import en from '../locales/en.json';
import es from '../locales/es.json';
const t = getAstroT(Astro.currentLocale ?? 'en', { en, es }, 'en');
---
<h1>{t('page.title')}</h1>Middleware helpers
import { createI18nLocals, detectLocaleFromRequest } from '@pico-intl-dev/astro/middleware';
const locale = detectLocaleFromRequest(request, {
supported: ['en', 'es'],
defaultLocale: 'en',
});
const locals = createI18nLocals(locale, { en, es }, 'en');API
| Export | Purpose |
| --- | --- |
| picoIntl() | Astro integration for i18n routing config |
| getAstroT() | Synchronous translate helper for .astro frontmatter |
| useAstroT() | Deprecated compatibility alias for getAstroT() |
| createAstroI18n() | Full PicoIntlInstance factory |
| getT() | Async translate factory for endpoints/API routes |
| defineI18nConfig() | Typed config helper |
| detectLocaleFromRequest() | URL/cookie/header locale detection |
| createI18nLocals() | Build Astro.locals-style i18n values |
| buildLocaleCookie() | Locale cookie helper |
Production notes
- Validate middleware strategy order against your route structure.
- Astro deployment modes differ; run the integration tests in your target environment if you rely heavily on middleware.
Verification
npm run build:all
npm run test:integration:astro