Alpha
Lingo.dev Compiler je ve fázi alpha. Je nestabilní, nedoporučuje se pro produkční nasazení a API se může mezi jednotlivými verzemi měnit.
Tato příručka popisuje migraci z původního balíčku Compiler lingo.dev na aktuální balíček @lingo.dev/compiler. Nový balíček přináší npm název se scope, zjednodušené API, integraci s Vite přes plugin a nový adresář .lingo/ pro metadata.
Přehled změn#
| Oblast | Dříve (lingo.dev) | Nyní (@lingo.dev/compiler) |
|---|---|---|
| Název balíčku | lingo.dev | @lingo.dev/compiler |
| Integrace s Next.js | Přímá úprava konfigurace | Asynchronní wrapper withLingo() |
| Integrace s Vite | Ruční nastavení | lingoCompilerPlugin |
| LingoProvider | Povinná prop loadDictionary | Bez nutnosti props |
| Adresář s metadaty | lingo/ | .lingo/ |
| Opt-in direktiva | 'use i18n' povinné | nepovinné (výchozí: překládat vše) |
| Importy | from "lingo.dev/react" | from "@lingo.dev/compiler/react" |
Migrace krok za krokem#
Nahraďte balíček
Odeberte původní balíček a nainstalujte nový:
npm uninstall lingo.dev
npm install @lingo.dev/compilerAktualizujte importy
Nahraďte všechny cesty v importech:
// Before
import { LingoProvider, useLingoContext } from "lingo.dev/react";
// After
import { LingoProvider, useLingoContext } from "@lingo.dev/compiler/react";Aktualizujte konfiguraci Next.js (pokud se vás to týká)
Konfigurace Next.js teď musí být asynchronní funkce:
// Before
import { withLingo } from "lingo.dev/next";
const nextConfig = {};
export default withLingo(nextConfig, { /* options */ });
// After
import type { NextConfig } from "next";
import { withLingo } from "@lingo.dev/compiler/next";
const nextConfig: NextConfig = {};
export default async function (): Promise<NextConfig> {
return await withLingo(nextConfig, {
sourceRoot: "./app",
sourceLocale: "en",
targetLocales: ["es", "de", "fr"],
models: "lingo.dev",
});
}Asynchronní wrapper je povinný. Synchronní export způsobí selhání buildu. Podrobnosti najdete v části Integrace s Next.js.
Aktualizujte konfiguraci Vite (pokud se vás to týká)
Nahraďte veškeré ruční nastavení pomocí lingoCompilerPlugin:
// vite.config.ts
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import { lingoCompilerPlugin } from "@lingo.dev/compiler/vite";
export default defineConfig({
plugins: [
lingoCompilerPlugin({
sourceRoot: "src",
sourceLocale: "en",
targetLocales: ["es", "de", "fr"],
models: "lingo.dev",
}),
react(), // Must come AFTER lingoCompilerPlugin
],
});Zjednodušte LingoProvider
Prop loadDictionary už není potřeba. Compiler načítání slovníků zajistí automaticky:
// Before
import { LingoProvider } from "lingo.dev/react";
<LingoProvider loadDictionary={loadDictionary}>
<App />
</LingoProvider>
// After
import { LingoProvider } from "@lingo.dev/compiler/react";
<LingoProvider>
<App />
</LingoProvider>Přesuňte adresář s metadaty
Přejmenujte adresář s metadaty z lingo/ na .lingo/:
mv lingo/ .lingo/Pokud váš .gitignore odkazuje na původní název adresáře, aktualizujte ho. Adresář .lingo/ by měl být commitnutý do správy verzí.
Aktualizujte direktivy „use i18n“ (nepovinné)
V novém balíčku je 'use i18n' nepovinné. Ve výchozím nastavení se překládají všechny soubory v sourceRoot. Pokud chcete zachovat opt-in chování, nastavte v konfiguraci useDirective: true:
{
useDirective: true, // Keep requiring 'use i18n' in each file
}Pokud odstraníte useDirective (nebo ho nastavíte na false), můžete ze souborů odstranit i direktivy 'use i18n' — všechny soubory v sourceRoot se budou překládat automaticky.
Znovu sestavte a ověřte
Spusťte vývojový server a ověřte, že se překlady zobrazují:
npm run devZkontrolujte, že:
- Pseudopřekladač vytváří značky
[!!! ... !!!](pokud je aktivní) - Všechny dříve přeložené řetězce stále fungují
- Soubor
.lingo/metadata.jsonse vytvoří nebo aktualizuje
