Lingo.dev + .ts (TypeScript)

Lingo.dev CLI übersetzt TypeScript-Lokalisierungsdateien unter Beibehaltung von Typdefinitionen, Objektstrukturen und TypeScript-spezifischer Syntax. Die CLI erhält TypeScript-Typprüfung und -Inferenz, unterstützt alle TypeScript-Syntax und -Funktionen, arbeitet mit Standard- und benannten Exporten, behandelt Template-Strings und Interpolation korrekt und integriert sich nahtlos in TypeScript-Kompilierungsprozesse.

Schnelle Einrichtung

Konfiguration für TypeScript-Lokalisierungsdateien:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "typescript": {
      "include": ["src/locales/[locale].ts"]
    }
  }
}

Erinnerung: [locale] ist ein Platzhalter, der wörtlich in der Konfiguration verbleiben sollte, da er während der CLI-Ausführung durch die tatsächliche Locale ersetzt wird.

TypeScript-Dateien übersetzen

npx lingo.dev@latest i18n

Bewahrt TypeScript-Syntax, Typannotationen und Modulexporte bei der Übersetzung von Stringinhalten.

TypeScript-Strukturunterstützung

Objekt-Export-Muster

export const messages = {
  common: {
    save: "Speichern",
    cancel: "Abbrechen",
    delete: "Löschen",
  },
  auth: {
    login: "Anmelden",
    register: "Konto erstellen",
  },
} as const;

Interface-basierter Ansatz

interface Messages {
  welcome: string;
  itemCount: (count: number) => string;
}

export const en: Messages = {
  welcome: "Willkommen auf unserer Plattform",
  itemCount: (count: number) => `Sie haben ${count} Elemente`,
};

Template-Literal-Unterstützung

export const messages = {
  greeting: (name: string) => `Hallo, ${name}!`,
  notification: `Sie haben ${count} neue Nachrichten`,
  path: `/users/${userId}/profile`,
};

Bewahrung der Typsicherheit

Const-Assertions

export const locale = {
  buttons: {
    submit: "Formular absenden",
    reset: "Zurücksetzen",
  },
} as const;

type LocaleKeys = typeof locale;

Typinformationen und Const-Assertions bleiben intakt.

Funktionsdefinitionen

export const t = {
  welcome: (name: string): string => `Welcome, ${name}!`,
  pluralize: (count: number): string =>
    count === 1 ? "1 item" : `${count} items`,
};

Funktionssignaturen und Rückgabetypen bleiben erhalten.

Erweiterte Konfiguration

Mehrere TypeScript-Dateien

"typescript": {
  "include": [
    "src/locales/[locale].ts",
    "src/translations/[locale]/*.ts"
  ]
}

Typ-Definitionen sperren

"typescript": {
  "include": ["src/locales/[locale].ts"],
  "lockedKeys": ["__type", "metadata"]
}