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"