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"]
}