2013-11-22 15 views
11

Sono appena iniziato con l'internazionalizzazione di Django e sto cercando di capire le migliori pratiche per l'utilizzo di {% blocktrans %}. È preferibile usare uno {% blocktrans %} per ogni paragrafo o dovrei avere un grande {% blocktrans %} che contiene molti paragrafi?Django i18n: dimensioni e formattazione consigliate per i blocchi {% blocktrans%}?

Avere una grande {% blocktrans %} è più veloce e rende la mia più pulito modello di look, ma la mia preoccupazione è che:

  • provoca tag HTML (come <p>...</p>) per diventare parte della stringa di traduzione
  • Se cambio una cosa in una parte del mio enorme blocco, lo msgid cambierebbe, il che sembra possa influire sugli altri paragrafi. Se ho blocchi più piccoli, i cambiamenti sarebbero più isolati (suppongo).
  • Se apporto una modifica alla formattazione, come aggiungere/rimuovere una nuova riga tra paragrafi, ciò cambierebbe lo msgid.

Mi sto anche interrogando sulla formattazione. Ci sono delle complicazioni nell'avere interruzioni di linea all'interno di uno {% blocktrans %}? O avere spazi guida? ad esempio:

{% blocktrans %} 
    You have {{ num_messages }} messages. 
    Another sentence. 
{% blocktrans %} 

Eventuali raccomandazioni sono benvenute.

+0

Se si dispone di molte cose da inserire nei propri blocktrans, è consigliabile prendere in considerazione l'utilizzo di un sistema di gestione dei contenuti, non necessariamente un sistema completo, ma almeno qualcosa di meno codificato. –

+0

(Il commento scritto da @brunodesthuilliers si riferisce ad un esempio di codice che avevo nella domanda prima di essere modificato.) – RexE

+0

Ha comunque senso. –

risposta

9

Molti piccoli {% blocktrans %} blocchi sono utili per vari motivi:

  • Ogni stringa traducibile finisce nei file di traduzione e questi file devono essere traducibili da persone che parlano la lingua. Non dovrebbero avere a che fare con la correttezza dei tag HTML, ma dovrebbero tradurre semplicemente alcune frasi in quella lingua. La marcatura secondaria va bene ma non l'HTML dell'intera pagina.

    Si può anche pensare in questo modo: meno marcatura nelle stringhe traducibili, meno possibilità di errori da parte dei traduttori (che possono avere o meno uno sfondo tecnico).

  • Se un enorme blocco di traduzione cambia, tutte le traduzioni devono essere eseguite nuovamente da ciascuno dei traduttori. Se si utilizzano blocchi traducibili di piccole dimensioni, è possibile riutilizzare la maggior parte dei paragrafi/testi tradotti esistenti e è necessario solo ottenere traduzioni aggiornate per le parti effettivamente modificate.

Quindi, per rispondere alla tua domanda: un tag blocktrans per paragrafo è una scelta migliore. Se si finisce per cambiare un paragrafo, allora solo quel paragrafo deve essere ricontrollato da un traduttore.

Riguardo a spazi vuoti e a capo a capo: per impostazione predefinita questi si troveranno nei file di traduzione PO. In Django 1.7 i blocktrans avranno un'opzione trimmed che rimuove gli spazi e ritorni a capo (source):

Questa opzione consente di rimuovere i caratteri di nuova riga dal l'inizio e la fine del contenuto delle {% blocktrans%} tag, sostituire qualsiasi spazio bianco all'inizio e alla fine di una riga e unire tutte le linee in una sola usando un carattere di spazio per separarle. Questo è abbastanza utile per indentare il contenuto di un tag {% blocktrans%} senza che i caratteri di indentazione finiscano nella voce corrispondente nel file PO, il che rende più semplice il processo di traduzione.

+0

Grazie, Simeon! – RexE