API Next.js
tyndale-next ajoute un câblage spécifique à Next.js au-dessus de tyndale-react.
Chemins d’import
Section intitulée « Chemins d’import »tyndale-next— helpers et composants orientés applicationtyndale-next/server— exports sûrs côté serveur pour le code RSCtyndale-next/config— wrapper de configuration Nexttyndale-next/middleware— middleware de routage des locales
Fondamentaux de l’App Router
Section intitulée « Fondamentaux de l’App Router »TyndaleServerProvider
Section intitulée « TyndaleServerProvider »Composant serveur qui lit public/_tyndale/{locale}.json et manifest.json depuis le disque, puis hydrate le provider client.
import { TyndaleServerProvider } from 'tyndale-next/server';
export default async function LocaleLayout({ children, params,}: { children: React.ReactNode; params: Promise<{ locale: string }>;}) { const { locale } = await params;
return ( <html lang={locale}> <body> <TyndaleServerProvider locale={locale}>{children}</TyndaleServerProvider> </body> </html> );}Props
locale: stringchildren: React.ReactNode
Notes :
- Lit la locale par défaut depuis
TYNDALE_DEFAULT_LOCALE. - Lit la sortie des traductions depuis
TYNDALE_OUTPUToupublic/_tyndale. - Ne définit pas
<html dir>pour vous. UtilisezuseDirection()côté client ougetDirection(locale)côté serveur.
TyndaleNextClientProvider
Section intitulée « TyndaleNextClientProvider »Wrapper client autour de TyndaleProvider. Il connecte useChangeLocale() à la navigation Next en poussant une URL préfixée par la locale.
La plupart des applications devraient utiliser TyndaleServerProvider plutôt que monter celui-ci directement.
'use client';
import { TyndaleNextClientProvider } from 'tyndale-next';
export function Providers({ children, locale, defaultLocale, translations, manifest,}: { children: React.ReactNode; locale: string; defaultLocale: string; translations: Record<string, string>; manifest: Record<string, unknown> | null;}) { return ( <TyndaleNextClientProvider locale={locale} defaultLocale={defaultLocale} translations={translations} manifest={manifest} > {children} </TyndaleNextClientProvider> );}generateStaticLocaleParams()
Section intitulée « generateStaticLocaleParams() »Retourne les params de locale pour generateStaticParams() en lisant tyndale.config.json.
import { generateStaticLocaleParams } from 'tyndale-next/server';
export function generateStaticParams() { return generateStaticLocaleParams();}Forme de retour :
Array<{ locale: string }>Le résultat inclut d’abord la locale par défaut, puis chaque locale de locales.
Configuration
Section intitulée « Configuration »withTyndaleConfig(nextConfig)
Section intitulée « withTyndaleConfig(nextConfig) »Enveloppe votre configuration Next et injecte les variables d’environnement d’exécution que Tyndale lit au moment du build et lors des requêtes.
import { withTyndaleConfig } from 'tyndale-next/config';
export default withTyndaleConfig({ reactStrictMode: true,});Ce que cela ajoute :
TYNDALE_DEFAULT_LOCALETYNDALE_LOCALESTYNDALE_COOKIE_NAMETYNDALE_LOCALE_ALIASESTYNDALE_OUTPUT- un alias webpack pour que le serveur et le client résolvent la même instance de
tyndale-react
Middleware
Section intitulée « Middleware »createTyndaleMiddleware()
Section intitulée « createTyndaleMiddleware() »Crée le middleware Next qui gère le routage des locales.
import { createTyndaleMiddleware } from 'tyndale-next/middleware';
export default createTyndaleMiddleware();
export const config = { matcher: ['/((?!api|_next|_tyndale|.*\\..*).*)'],};Comportement, dans l’ordre :
- Utilise la locale de l’URL lorsqu’elle est présente.
- Se rabat sur le cookie de locale.
- Se rabat sur l’en-tête
Accept-Language. - Se rabat sur
defaultLocale.
Il :
- redirige les alias de locale vers leur locale canonique
- redirige les préfixes de locale non pris en charge vers la locale par défaut
- définit un en-tête de requête
x-tyndale-localepour les routes valides préfixées par une locale - persiste la locale choisie dans le cookie
TYNDALE_LOCALE
Helpers de direction et de locale
Section intitulée « Helpers de direction et de locale »useDirection()
Section intitulée « useDirection() »Hook client qui renvoie 'ltr' ou 'rtl' pour la locale actuelle.
'use client';
import { useDirection } from 'tyndale-next';
export function HtmlShell({ children }: { children: React.ReactNode }) { const dir = useDirection(); return <div dir={dir}>{children}</div>;}getDirection(locale)
Section intitulée « getDirection(locale) »Helper sûr côté serveur qui renvoie 'ltr' ou 'rtl' pour une chaîne de locale.
import { getDirection } from 'tyndale-next/server';
const dir = getDirection(locale);isRtlLocale(locale)
Section intitulée « isRtlLocale(locale) »Renvoie true lorsque la locale utilise une écriture de droite à gauche.
import { isRtlLocale } from 'tyndale-next/server';
isRtlLocale('ar'); // trueisRtlLocale('en-US'); // falseresolveAlias(locale, aliases)
Section intitulée « resolveAlias(locale, aliases) »Associe un alias de locale à sa locale canonique.
import { resolveAlias } from 'tyndale-next/server';
resolveAlias('pt-BR', { 'pt-BR': 'pt' }); // 'pt'Limite de cache
Section intitulée « Limite de cache »TyndaleCache
Section intitulée « TyndaleCache »Boundary de cache client pour le contenu traduit dans les layouts partagés. La clé de cache est définie à la fois par id et par la locale actuelle.
import { TyndaleCache } from 'tyndale-next';import { T } from 'tyndale-react';
<TyndaleCache id="footer-copy"> <T>Documentation, guides, and examples.</T></TyndaleCache>Utilisez-le pour les éléments d’UI traduits répétés dans des layouts qui se réaffichent pendant la navigation. Ne l’utilisez pas comme cache de données général.