Lingo.dev + .ts (TypeScript)
Lingo.dev CLI traduce archivos de localización TypeScript preservando las definiciones de tipo, estructuras de objetos y sintaxis específica de TypeScript. El CLI mantiene la verificación e inferencia de tipos de TypeScript, soporta toda la sintaxis y características de TypeScript, funciona con exportaciones predeterminadas y nombradas, maneja correctamente las cadenas de plantilla e interpolación, y se integra perfectamente con los procesos de compilación de TypeScript.
Configuración rápida
Configuración para archivos de localización TypeScript:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"typescript": {
"include": ["src/locales/[locale].ts"]
}
}
}
Recordatorio: [locale]
es un marcador de posición que debe permanecer literalmente en la configuración, ya que se reemplaza con el idioma real durante la ejecución del CLI.
Traducir archivos TypeScript
npx lingo.dev@latest i18n
Preserva la sintaxis de TypeScript, las anotaciones de tipo y las exportaciones de módulos mientras traduce el contenido de las cadenas.
Soporte para estructuras TypeScript
Patrón de exportación de objetos
export const messages = {
common: {
save: "Guardar",
cancel: "Cancelar",
delete: "Eliminar",
},
auth: {
login: "Iniciar sesión",
register: "Crear cuenta",
},
} as const;
Enfoque basado en interfaces
interface Messages {
welcome: string;
itemCount: (count: number) => string;
}
export const en: Messages = {
welcome: "Bienvenido a nuestra plataforma",
itemCount: (count: number) => `Tienes ${count} elementos`,
};
Soporte para literales de plantilla
export const messages = {
greeting: (name: string) => `Hola, ${name}!`,
notification: `Tienes ${count} nuevos mensajes`,
path: `/users/${userId}/profile`,
};
Preservación de la seguridad de tipos
Aserciones const
export const locale = {
buttons: {
submit: "Enviar formulario",
reset: "Restablecer",
},
} as const;
type LocaleKeys = typeof locale;
La información de tipo y las aserciones const permanecen intactas.
Definiciones de funciones
export const t = {
welcome: (name: string): string => `Welcome, ${name}!`,
pluralize: (count: number): string =>
count === 1 ? "1 item" : `${count} items`,
};
Las firmas de función y los tipos de retorno se conservan.
Configuración avanzada
Múltiples archivos TypeScript
"typescript": {
"include": [
"src/locales/[locale].ts",
"src/translations/[locale]/*.ts"
]
}
Bloquear definiciones de tipo
"typescript": {
"include": ["src/locales/[locale].ts"],
"lockedKeys": ["__type", "metadata"]
}