useLanguage
El hook useLanguage facilita la gestión de traducciones y el cambio de idioma en una aplicación. Permite traducir palabras con base en una lista de traducciones proporcionada y manejar casos en los que no se encuentra una traducción.
Importación
Para importar el componente useLanguage, se puede hacer desde fenextjs
import { useLanguage } from "fenextjs";Parámetros
| Parámetro | Tipo | Requerido | Default | Descripcion |
|---|---|---|---|---|
| langs | Langs | sí | Lista de idiomas disponibles en la aplicación, definida como un array de strings. | |
| listTranductions | LanguageListProps<Langs> | sí | Un objeto que contiene las traducciones organizadas por palabra e idioma. | |
| defaultLang | Langs[number] | no | Idioma predeterminado que se usará si no se ha seleccionado otro idioma. | |
| onNoFoundTranslate | (data: { word: string; lang: Langs[number] }) => void | no | Función que se ejecuta cuando no se encuentra una traducción para una palabra específica. | |
| fallbackNoFoundTranslation | string | no | Traducción alternativa que se usará cuando no se encuentre la traducción específica para una palabra. |
LanguageListProps
Interface para definir la lista de idiomas.
interface LanguageListProps<Langs extends string[]> {
[word: string]: {
[lang in Langs[number]]: any;
};
}Returns
| Parametro | Tipo | Descripcion |
|---|---|---|
| onTranslate | (word?: any) => any | Función que recibe una palabra y devuelve su traducción en el idioma actual o la traducción alternativa, si no se encuentra. |
| load | boolean | Variable que determina si currentLang temino de cargar. |
| currentLang | Langs[number] | El idioma actual seleccionado. |
| setCurrentLang | (lang: Langs[number]) => void | Función para cambiar el idioma actual. |
Usos
- Traducción básica
const { onTranslate } = useLanguage<["en", "es"]>({
langs: ["en", "es"],
listTranductions: {
hello: { en: "Hello", es: "Hola" },
world: { en: "World", es: "Mundo" },
},
defaultLang: "en",
});
const translatedWord = onTranslate("hello"); // "Hello" si el idioma actual es "en"- Cambio de idioma
const { setCurrentLang } = useLanguage<["en", "es"]>({
langs: ["en", "es"],
listTranductions: {
goodbye: { en: "Goodbye", es: "Adiós" },
},
defaultLang: "es",
});
setCurrentLang("en"); // Cambia el idioma actual a "en"- Fallback para traducciones no encontradas
const { onTranslate } = useLanguage<["en", "es"]>({
langs: ["en", "fr"],
listTranductions: {
welcome: { en: "Welcome", fr: "Bienvenue" },
},
fallbackNoFoundTranslation: "Translation not available",
});
const translation = onTranslate("nonexistent"); // "Translation not available"