Lingo.dev + .ts (TypeScript)
Lingo.dev CLI traduit les fichiers de localisation TypeScript tout en préservant les définitions de types, les structures d'objets et la syntaxe spécifique à TypeScript. Le CLI maintient la vérification et l'inférence de types TypeScript, prend en charge toute la syntaxe et les fonctionnalités TypeScript, fonctionne avec les exportations par défaut et nommées, gère correctement les chaînes de modèles et l'interpolation, et s'intègre parfaitement aux processus de compilation TypeScript.
Configuration rapide
Configuration pour les fichiers de localisation TypeScript :
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"typescript": {
"include": ["src/locales/[locale].ts"]
}
}
}
Rappel : [locale]
est un placeholder qui doit rester littéralement dans la configuration, car il est remplacé par la locale réelle lors de l'exécution du CLI.
Traduire des fichiers TypeScript
npx lingo.dev@latest i18n
Préserve la syntaxe TypeScript, les annotations de type et les exportations de modules tout en traduisant le contenu des chaînes.
Support des structures TypeScript
Modèle d'exportation d'objet
export const messages = {
common: {
save: "Enregistrer",
cancel: "Annuler",
delete: "Supprimer",
},
auth: {
login: "Se connecter",
register: "Créer un compte",
},
} as const;
Approche basée sur les interfaces
interface Messages {
welcome: string;
itemCount: (count: number) => string;
}
export const en: Messages = {
welcome: "Bienvenue sur notre plateforme",
itemCount: (count: number) => `Vous avez ${count} éléments`,
};
Support des littéraux de modèle
export const messages = {
greeting: (name: string) => `Bonjour, ${name} !`,
notification: `Vous avez ${count} nouveaux messages`,
path: `/users/${userId}/profile`,
};
Préservation de la sécurité des types
Assertions const
export const locale = {
buttons: {
submit: "Soumettre le formulaire",
reset: "Réinitialiser",
},
} as const;
type LocaleKeys = typeof locale;
Les informations de type et les assertions const restent intactes.
Définitions de fonctions
export const t = {
welcome: (name: string): string => `Welcome, ${name}!`,
pluralize: (count: number): string =>
count === 1 ? "1 item" : `${count} items`,
};
Les signatures de fonctions et les types de retour sont préservés.
Configuration avancée
Fichiers TypeScript multiples
"typescript": {
"include": [
"src/locales/[locale].ts",
"src/translations/[locale]/*.ts"
]
}
Verrouiller les définitions de types
"typescript": {
"include": ["src/locales/[locale].ts"],
"lockedKeys": ["__type", "metadata"]
}