Tradurre EmDash

In questa pagina

L’interfaccia di amministrazione di EmDash è traducibile utilizzando Lingui per l’estrazione dei messaggi e Lunaria per tracciare i progressi della traduzione. Tutte le traduzioni si trovano nei file PO (gettext) — uno per lingua.

Stato della traduzione

Consulta il pannello delle traduzioni per vedere i progressi attuali in tutte le lingue.

Chi può tradurre

Ogni traduzione deve essere supervisionata da un madrelingua o parlante fluente. Le traduzioni generate da IA sono accettate, ma solo quando un parlante fluente rivede ogni stringa e la visualizza in anteprima nel pannello di amministrazione in esecuzione prima di inviarla. L’output automatico non supervisionato non è accettato. Vedi Traduzioni assistite da IA e Testare le tue traduzioni di seguito.

Lasciare una stringa non tradotta è meglio che tradurla in modo errato. Una traduzione errata inganna gli utenti; il fallback in inglese li disturba solo.

Struttura dei file

I cataloghi delle traduzioni si trovano in packages/admin/src/locales/:

packages/admin/src/locales/
├── en/
│   └── messages.po    # English (source)
├── de/
│   └── messages.po    # German
└── ...

Ogni file .po contiene coppie msgid/msgstr. Il msgid è il testo sorgente in inglese; il msgstr è la tua traduzione. Un msgstr vuoto significa “non ancora tradotto” — Lingui utilizzerà l’inglese come fallback a runtime.

Tradurre le stringhe

  1. Controlla il pannello delle traduzioni per vedere cosa necessita di lavoro. Controlla le PR aperte per evitare di duplicare gli sforzi.

  2. Fai il fork del repository e crea un branch:

    git checkout -b i18n/de
  3. Apri il file PO della tua lingua (ad esempio, packages/admin/src/locales/de/messages.po).

  4. Compila le traduzioni. Ogni voce appare così:

    #: packages/admin/src/components/LoginPage.tsx:304
    msgid "Sign in with Passkey"
    msgstr ""

    Compila il msgstr:

    #: packages/admin/src/components/LoginPage.tsx:304
    msgid "Sign in with Passkey"
    msgstr "Mit Passkey anmelden"
  5. Testa le tue traduzioni (vedi sotto).

  6. Apri una PR verso main. Formato del titolo: i18n(de): add/update German translations.

Cosa tradurre

  • Il valore msgstr per ogni voce.

Cosa NON tradurre

  • I valori msgid — sono chiavi di ricerca.
  • I segnaposto di interpolazione come {error}, {email}, {label} — mantienili esattamente come sono.
  • Tag in stile XML come <0>, </0> — questi racchiudono elementi interattivi (link, pulsanti). Mantieni i tag e traduci il testo tra di essi.
  • I commenti che iniziano con #: — sono riferimenti sorgente aggiunti da Lingui.

Interpolazione e tag

Alcune stringhe contengono segnaposto e tag:

msgid "Authentication error: {error}"
msgstr "Authentifizierungsfehler: {error}"

msgid "Don't have an account? <0>Sign up</0>"
msgstr "Noch kein Konto? <0>Registrieren</0>"

msgid "If an account exists for <0>{email}</0>, we've sent a sign-in link."
msgstr "Falls ein Konto für <0>{email}</0> existiert, haben wir einen Anmeldelink gesendet."

I segnaposto ({error}, {email}) vengono sostituiti con valori dinamici a runtime. I tag (<0>...</0>) racchiudono componenti React. Entrambi devono apparire nella tua traduzione esattamente come appaiono nella sorgente — stessi nomi, stesso annidamento.

Testare le tue traduzioni

  1. Compila ed esegui la demo:

    pnpm run locale:compile
    pnpm build
    pnpm --filter emdash-demo dev
  2. Cambia lingua nella pagina Impostazioni dell’amministrazione e verifica che le tue traduzioni appaiano corrette nel contesto.

Lingua pseudo

EmDash include una lingua pseudo che trasforma tutte le stringhe racchiuse in sosia accentati — "Dashboard" diventa "Ðàšĥƀöàřð", e così via. Qualsiasi stringa che appare in inglese normale mentre la lingua pseudo è attiva manca di un wrapper t\…“ o proviene dall’esterno del catalogo.

Per abilitarla, aggiungi quanto segue al tuo file .env nella directory demo:

EMDASH_PSEUDO_LOCALE=1

Quindi riavvia il server di sviluppo. La lingua pseudo appare come Pseudo nel selettore della lingua sulla pagina di accesso e nelle Impostazioni. Passa ad essa per individuare stringhe non racchiuse a colpo d’occhio.

Aggiungere una nuova lingua

Se la tua lingua non ha ancora un file PO:

  1. Aggiungi la lingua a packages/admin/src/locales/locales.ts:

    export const LOCALES: LocaleDefinition[] = [
      { code: "en", label: "English", enabled: true },
      { code: "de", label: "Deutsch", enabled: true },
      // ...
      { code: "ja", label: "日本語", enabled: false },  // add yours
    ];

    Questa è l’unica fonte di verità — lingui.config.ts, lunaria.config.ts e il runtime di amministrazione derivano tutti le loro liste di lingue da questo file. Imposta enabled: false a meno che le tue traduzioni abbiano una copertura del 100% — un maintainer lo abiliterà una volta che la traduzione raggiunge una copertura sufficiente.

  2. Esegui l’estrazione per generare il file PO vuoto:

    pnpm run locale:extract

    Questo crea packages/admin/src/locales/{your-locale}/messages.po con tutte le stringhe pronte per la traduzione.

  3. Traduci e testa seguendo i passaggi sopra.

Standard di traduzione

Accuratezza

Le traduzioni devono rappresentare fedelmente il testo sorgente in inglese al livello di un madrelingua. Non aggiungere, rimuovere o reinterpretare il significato. Se una stringa sorgente è ambigua, controlla il commento #: per la posizione del file sorgente — leggi il codice del componente per capire il contesto.

Coerenza

Usa terminologia coerente all’interno della tua lingua. Se traduci “collection” come “Sammlung” in un punto, non passare a “Kollektion” altrove. Se la tua lingua ha già traduzioni, leggi il file PO esistente prima di iniziare per corrispondere alla terminologia stabilita.

Tono

L’interfaccia di amministrazione usa un tono diretto e professionale. Adattati a questo nella tua lingua — evita frasi eccessivamente formali o eccessivamente casuali.

Traduzioni assistite da IA

Puoi generare traduzioni con strumenti IA, incluso un primo passaggio completo, ma un parlante fluente deve supervisionare il risultato:

  • Un parlante fluente deve rivedere ogni stringa. Gli strumenti IA commettono errori sottili che solo un parlante fluente coglie — registro sbagliato, frasi innaturali, termini tecnici incorretti.
  • Un parlante fluente deve visualizzare in anteprima le traduzioni nell’interfaccia di amministrazione in esecuzione. Gli strumenti IA non hanno consapevolezza dei vincoli di layout o del contesto dell’interfaccia utente.
  • Divulga l’uso dell’IA nella descrizione della tua PR.
  • Le PR con traduzioni automatiche non supervisionate verranno chiuse.

Traduzioni parziali

Le traduzioni parziali sono benvenute. Non è necessario tradurre ogni stringa in una PR — qualsiasi progresso aiuta. Le stringhe non tradotte utilizzeranno l’inglese come fallback a runtime.