Quick Start (SolidStart)
-
Install packages
Terminal window pnpm add @fluenti/core @fluenti/solid @solidjs/router @solidjs/start solid-js vinxi -
Configure SolidStart
app.config.ts import { defineConfig } from '@solidjs/start/config'export default defineConfig({server: { preset: 'node-server' },}) -
Create i18n helpers
src/lib/i18n.ts import { getHydratedLocale } from '@fluenti/core'import en from '../locales/compiled/en'import ja from '../locales/compiled/ja'export const DEFAULT_LOCALE = 'en'export const allMessages = { en, ja }export function getInitialLocale(): string {return getHydratedLocale(DEFAULT_LOCALE)} -
Set up the app with I18nProvider and SSR hydration
src/app.tsx import { Router } from '@solidjs/router'import { FileRoutes } from '@solidjs/start/router'import { Suspense } from 'solid-js'import { isServer } from 'solid-js/web'import { I18nProvider, useI18n } from '@fluenti/solid'import { getSSRLocaleScript } from '@fluenti/core'import { allMessages, DEFAULT_LOCALE, getInitialLocale } from './lib/i18n'export default function App() {const initialLocale = isServer ? DEFAULT_LOCALE : getInitialLocale()return (<Routerroot={(props) => (<I18nProviderlocale={initialLocale}fallbackLocale={DEFAULT_LOCALE}messages={allMessages}>{isServer && (<script innerHTML={getSSRLocaleScript(initialLocale).replace(/<\/?script>/g, '')} />)}<Nav /><Suspense>{props.children}</Suspense></I18nProvider>)}><FileRoutes /></Router>)}function Nav() {const { t, locale, setLocale } = useI18n()return (<nav><buttonstyle={{ 'font-weight': locale() === 'en' ? 'bold' : 'normal' }}onClick={() => {document.cookie = `locale=en;path=/;max-age=31536000`setLocale('en')}}>English</button><buttonstyle={{ 'font-weight': locale() === 'ja' ? 'bold' : 'normal' }}onClick={() => {document.cookie = `locale=ja;path=/;max-age=31536000`setLocale('ja')}}>日本語</button></nav>)} -
Write a page route
src/routes/index.tsx import { Trans } from '@fluenti/solid'export default function Home() {const name = 'World'return (<div><h1>{t`Welcome to my app`}</h1><p>{t`Hello, ${name}!`}</p><Trans>Read the <a href="/docs">documentation</a> to learn more.</Trans></div>)}The
t`...`tagged template is a compiler macro — no import needed. -
Extract, translate, and compile
Terminal window npx fluenti extract# ... translate the .po files ...npx fluenti compile
Key differences from SolidJS SPA
Section titled “Key differences from SolidJS SPA”- Uses
@solidjs/startwith vinxi as the dev server - File-based routing with
<FileRoutes /> - SSR hydration via
getSSRLocaleScript+getHydratedLocale isServerguard to inject locale script only during SSR- Cookie-based locale persistence for server-side detection
Next steps
Section titled “Next steps”- SolidStart guide — full integration reference
- SolidJS SPA — if you don’t need SSR
- Translating Content — all translation APIs