Un pacchetto flessibile per la gestione delle traduzioni in applicazioni React e Next.js.
- ✅ Supporto per vari framework (React, Next.js)
- ✅ Adapter personalizzabili per diversi sistemi di traduzione (i18next, next-intl, next-i18next)
- ✅ Supporto per SSR (Server Side Rendering)
- ✅ API consistente indipendentemente dal sistema sottostante
- ✅ Inizializzazione personalizzabile
- ✅ Funzionamento offline con traduzioni statiche
npm install @gaddario98/react-localization
# Peer dependencies
npm install i18next react-i18next
import { initializeI18n } from '@gaddario98/react-localization';
// Definizione delle risorse di traduzione
const resources = {
it: {
common: {
hello: 'Ciao',
welcome: 'Benvenuto, {{name}}!',
},
},
en: {
common: {
hello: 'Hello',
welcome: 'Welcome, {{name}}!',
},
},
};
// Inizializzazione con opzioni personalizzate
initializeI18n(resources, {
defaultLanguage: 'it',
fallbackLanguage: 'en',
debug: process.env.NODE_ENV === 'development',
});
import React from 'react';
import { useTranslatedText } from '@gaddario98/react-localization';
const MyComponent = () => {
const { traslateText } = useTranslatedText('common');
return (
<div>
<h1>{traslateText('hello')}</h1>
<p>{traslateText('welcome', { name: 'Mario' })}</p>
</div>
);
};
// _app.tsx
import { setTranslationAdapter, adapters } from '@gaddario98/react-localization';
// Configura l'adapter per next-intl
setTranslationAdapter(adapters.nextIntl());
// Il resto dell'app...
import { setTranslationAdapter, adapters } from '@gaddario98/react-localization';
// Definisci le traduzioni direttamente
const translations = {
common: {
hello: 'Ciao',
welcome: 'Benvenuto, {{name}}!',
},
};
// Configura l'adapter statico
setTranslationAdapter(adapters.static(translations));
import { setI18nInitializer } from '@gaddario98/react-localization';
import i18n from 'i18next';
import Backend from 'i18next-http-backend';
// Configura una funzione di inizializzazione personalizzata
setI18nInitializer((resources, options) => {
i18n
.use(Backend) // Aggiungi il backend HTTP per caricare traduzioni remote
.init({
lng: options.defaultLanguage || 'en',
resources,
backend: {
loadPath: '/locales/{{lng}}/{{ns}}.json',
...options.backend,
},
// Altre opzioni...
});
});
Il pacchetto fornisce diversi adapter predefiniti:
adapters.reactI18next()
: Per React con react-i18nextadapters.i18next()
: Per utilizzo diretto di i18nextadapters.static()
: Per traduzioni statiche senza dipendenze esterneadapters.nextIntl()
: Per Next.js con next-intladapters.nextI18next()
: Per Next.js con next-i18next
import { setTranslationAdapter } from '@gaddario98/react-localization';
// Crea un adapter personalizzato
setTranslationAdapter({
getTranslator: (namespace) => {
// Implementa la tua logica di traduzione qui
return {
translate: (key, options) => {
// La tua implementazione...
return key; // Fallback
}
};
}
});
useTranslatedText(namespace?)
: Hook principale per le traduzioniuseTranslation
: Re-export di react-i18next per retrocompatibilità
initializeI18n(resources, options?)
: Inizializza il sistema di traduzionesetI18nInitializer(initializer)
: Configura un inizializzatore personalizzatosetTranslationAdapter(adapter)
: Configura un adapter personalizzato per le traduzioni
adapters.reactI18next()
: Per React con react-i18nextadapters.i18next(i18nInstance?)
: Per utilizzo diretto di i18nextadapters.static(translations)
: Per traduzioni staticheadapters.nextIntl()
: Per Next.js con next-intladapters.nextI18next()
: Per Next.js con next-i18next