Per i traduttori¶
Questa pagina è per chi modifica il catalogo, non per chi scrive il codice. È breve di proposito, ed è pensata per essere collegata o copiata dentro le istruzioni per i traduttori di un progetto.
Niente qui richiede di saper leggere Python. Tutto qui riguarda una cosa sola: i pezzi di un messaggio racchiusi tra parentesi graffe.
Che cos'è un segnaposto¶
Un messaggio in un catalogo può contenere nomi tra parentesi graffe:
{name} è un segnaposto. Quando il programma mostra questo messaggio,
sostituisce {name} con un valore che fornisce lui — il nome di una persona,
il nome di un file, un numero. Il segnaposto non è una parola da tradurre; è
uno spazio da riempire.
La tua traduzione va nel msgstr, e deve conservare quello spazio:
Che cosa puoi cambiare e che cosa no¶
Puoi:
- Spostare un segnaposto dovunque lo voglia la grammatica della lingua di destinazione, anche all'inizio del messaggio.
- Ripetere un segnaposto se la lingua ha bisogno del valore due volte.
- Riscrivere ogni altra parola, punteggiatura, spaziatura e ordine della frase compresi.
Non devi:
- Tradurre il nome dentro le graffe.
{name}resta{name}, anche in una lingua che non scrive nient'altro in caratteri latini. - Togliere le graffe, né scrivere il nome senza di esse.
- Sostituire le graffe ASCII
{}con quelle a larghezza intera{}. Molti metodi di input producono le forme a larghezza intera; sono quasi identiche a vedersi e non funzionano. - Aggiungere formattazione, come
{name!r}o{amount:.2f}. Come un valore viene mostrato si decide nel programma, non nel catalogo. - Inventare un segnaposto che non è nel
msgid.
Se un messaggio ha bisogno di un valore che l'originale non offre, è un messaggio che deve cambiare chi sviluppa. Dillo, invece di aggirare l'ostacolo.
Forme plurali¶
Un messaggio con conteggio arriva con uno spazio msgstr per ogni forma
plurale della tua lingua, ed è la tua lingua a decidere quante sono: una per
il giapponese, due per il tedesco, tre per il russo, sei per l'arabo. Riempi
ogni spazio che il catalogo ti dà.
Due regole che colgono in fallo:
- Gli spazi non sono "singolare, plurale, plurale di più". Ogni indice significa quello che dice la regola di plurale della tua lingua. La terza forma del lettone è solo per lo zero; la seconda dello sloveno è per il due esatto; il gallese mette il caso generale all'indice 0 e il singolare all'indice 1.
- Due spazi possono legittimamente contenere lo stesso testo. In turco, ungherese, persiano e bengalese un sostantivo resta al singolare dopo un numerale, quindi entrambe le forme di un messaggio con conteggio sono la stessa stringa. È corretto, non una svista da copia e incolla.
Le regole sui segnaposto qui sopra valgono per ogni forma indipendentemente.
Voci fuzzy¶
Una voce marcata fuzzy è l'ipotesi di una macchina: chi sviluppa ha cambiato
il messaggio originale, e gli strumenti hanno accoppiato il nuovo testo con la
tua vecchia traduzione, così hai da dove partire.
Una voce fuzzy non viene usata dal programma — al suo posto mostra
l'originale non tradotto — finché qualcuno non ne rivede il testo e non toglie
il marcatore fuzzy. Quasi tutti gli editor PO hanno un pulsante apposta.
Leggere un messaggio di errore¶
Gli strumenti verificano i segnaposto quando il catalogo viene compilato, e il
messaggio è scritto per te e non per chi programma. Riferire soltanto che
{name} manca è un vicolo cieco quando puoi vedere quei caratteri davanti a
te, quindi dove un segnaposto sembra presente ma non lo è, il messaggio dice
perché. Contro l'originale Hello {name}, ciascuno di questi è riportato sotto
translation does not match the source placeholders:
| La tua traduzione dice | La ragione che riporta |
|---|---|
こんにちは {name} |
{name} is missing (the braces around it are not the ASCII { and }) |
こんにちは {{name}} |
{name} is missing (it is written {{name}}, which is how a literal brace is escaped) |
こんにちは name |
{name} is missing (the name appears, but not inside braces) |
こんにちは {名前} |
{name} is missing; {名前} is not in the source message |
I caratteri che non si possono vedere ricevono un trattamento a parte. Uno spazio unificatore dentro le graffe è qualcosa che un metodo di input produce e nessun editor mostra, quindi il messaggio lo stampa per punto di codice invece di nominare un carattere che non potresti mai trovare:
Un nome le cui lettere mescolano sistemi di scrittura — il caso degli
omoglifi, dove una а cirillica è indistinguibile da una latina — viene
mostrato due volte, una in forma leggibile e una in forma escapata, che è
l'unica forma che distingue le due:
translation does not match the source placeholders: {name} is missing;
{nаme} (n\u0430me) is not in the source message
La stessa disambiguazione si applica quando un nome greco o cirillico scritto
interamente in un solo alfabeto entra in conflitto con un nome sorgente
ASCII, incluso il caso a una lettera a latina / а cirillica.
Se incontri uno di questi casi e la soluzione non è ovvia, la mossa sicura è
cancellare il segnaposto che hai scritto e copiare quello dal msgid.
Che cosa i controlli non possono fare¶
Gli strumenti verificano che i tuoi segnaposto siano intatti. Non sanno dire se la traduzione sia accurata, naturale o adatta al contesto — quello resta interamente a te.
Due cose aiutano più di qualunque controllo:
- Leggi il commento per il traduttore. Una riga che inizia con
#.sopra il messaggio è chi sviluppa che ti dice dove compare e che cosa significa. - Chiedi del
msgctxt. Quando la stessa parola compare due volte con contesti diversi, è perché le due vanno tradotte in modo diverso — "Open" il pulsante e "Open" lo stato, per esempio.