dictionary.js
¿Qué es el archivo dictionary.js? ¿Cómo se utiliza?
Introducción
dictionary.js
es un archivo que el Compilador de Lingo.dev genera durante el tiempo de compilación. Almacena las traducciones de la aplicación en un formato que puede cargarse eficientemente en tiempo de ejecución.
Nota: Todos los cambios en el archivo dictionary.js
deben ser confirmados en el repositorio.
Archivo de ejemplo
Este es un ejemplo de un archivo dictionary.js
(muy mínimo):
export default {
version: 0.1,
files: {
"components/hero.tsx": {
entries: {
"3/declaration/body/0/argument/1/1": {
content: {
en: "Welcome to our app",
es: "Bienvenido a nuestra aplicación",
},
hash: "a1b2c3d4e5f6...",
},
},
},
},
};
Para una descripción completa de las propiedades disponibles, consulta Propiedades del esquema.
Ubicación del archivo
Por defecto, el archivo dictionary.js
se genera en un directorio src/lingo
, relativo a la ubicación de la configuración del compilador (por ejemplo, un archivo vite.config.ts
).
Para aprender cómo personalizar esta ubicación, consulta Opciones del compilador.
Carga del diccionario
El paquete lingo.dev
proporciona varias funciones loadDictionary
. Estas funciones son responsables de cargar el diccionario para el idioma actual del usuario (basado en el valor actual de la cookie de idioma).
Cada variante de la función está diseñada para ser utilizada en diferentes entornos. Este es un ejemplo de uso de la versión del lado del cliente de la función:
<LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
<App />
</LingoProviderWrapper>
Debes utilizar únicamente las funciones proporcionadas para cargar el diccionario, en lugar de intentar cargarlo manualmente.
Edición del diccionario
Aunque el archivo dictionary.js
se genera automáticamente, es editable. Puedes, por ejemplo, cambiar manualmente una traducción editando el contenido de la traducción.
Dicho esto, si el contenido de origen cambia, la edición manual será sobrescrita, por lo que generalmente es más mantenible utilizar el atributo data-lingo-override.
Propiedades del esquema
Esta sección describe todas las propiedades que se encuentran en un archivo dictionary.js
.
version
Identificador de versión del esquema utilizado para la verificación de compatibilidad y futuras migraciones.
- Tipo:
number
- Obligatorio: Sí
files
Objeto contenedor que organiza todas las entradas de traducción por sus rutas de archivo fuente. Cada clave representa una ruta relativa desde la raíz del código fuente (p. ej., "components/hero.tsx"
, "pages/home.jsx"
).
- Tipo:
object
- Obligatorio: Sí
files[filePath].entries
Contenedor para todas las entradas de traducción descubiertas en el archivo fuente específico. Cada clave es un identificador basado en AST que identifica de manera única el contenido traducible dentro del archivo.
- Tipo:
object
- Obligatorio: Sí
files[filePath].entries[astKey].content
Mapea identificadores de localización a sus correspondientes cadenas traducidas. Contiene traducciones para todas las localizaciones configuradas en tu proyecto.
- Tipo:
object
- Obligatorio: Sí
files[filePath].entries[astKey].hash
Hash SHA-256 del contenido original de la fuente utilizado para la detección de cambios y la invalidación de caché. Cuando el contenido de la fuente cambia, este hash cambia, lo que desencadena la retraducción de la entrada.
- Tipo:
string
- Obligatorio: Sí