2013-11-22 13 views
11

Po prostu zaczynam od internacjonalizacji Django i próbuję zrozumieć najlepsze praktyki dotyczące używania {% blocktrans %}. Czy do każdego akapitu należy używać jednego {% blocktrans %}, czy powinienem mieć jeden duży {% blocktrans %} zawierający wiele akapitów?Django i18n: zalecany rozmiar i formatowanie bloków {% blocktrans%}?

Mając jeden wielki {% blocktrans %} jest szybsza i sprawia, że ​​moje czystsze szablon wygląd, ale moim problemem jest to, że:

  • powoduje znaczniki HTML (jak <p>...</p>), aby stać się częścią łańcucha tłumaczeń
  • Jeśli zmienię jedna rzecz w jednej części mojego ogromnego bloku zmieni się, msgid, co wydaje się, że mogłoby wpłynąć na inne akapity. Jeśli mam mniejsze bloki, zmiany będą bardziej odizolowane (tak przypuszczam).
  • Jeśli dokonam zmiany formatowania, jak dodanie/usunięcie nowej linii między akapitami, zmieniloby to msgid.

Zastanawiam się również nad formatowaniem. Czy są jakieś komplikacje związane z łamaniem linii wewnątrz {% blocktrans %}? A może masz wiodące miejsca? np .:

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

Wszelkie zalecenia są mile widziane.

+0

Jeśli masz dużo rzeczy do umieszczenia w swoich blokach, możesz rozważyć użycie jakiegoś systemu zarządzania treścią - niekoniecznie pełnego cms, ale przynajmniej trochę mniej twardego. –

+0

(Komentarz napisany przez @brunodesthuilliers odnosi się do próbki kodu, którą miałem w pytaniu przed edycją.) – RexE

+0

Nadal ma jednak sens. –

Odpowiedz

9

Wiele małych {% blocktrans %} bloki są korzystne z różnych powodów:

  • Każdy tłumaczyć kończy się w plikach tłumaczeniowych i te pliki powinny być tłumaczony przez ludzi mówiących językiem. Nie powinni oni zajmować się poprawnością tagów HTML, ale powinni przetłumaczyć tylko kilka zdań na ten język. Drobne znaczniki są w porządku, ale nie HTML całej strony.

    Można również pomyśleć o tym w następujący sposób: im mniej znaczników w tłumaczeniach, tym mniejsze są szanse na błędy ze strony tłumaczy (którzy mogą mieć lub nie mieć zaplecza technicznego).

  • Jeśli zmieni się ogromny blok tłumaczenia, wszystkie tłumaczenia muszą zostać wykonane ponownie przez każdego z tłumaczy. Jeśli używasz małych bloków, które można tłumaczyć, możesz ponownie użyć większości przetłumaczonych akapitów/tekstów i potrzebujesz tylko zaktualizowanych tłumaczeń dla faktycznie zmienionych części.

Więc, aby odpowiedzieć na twoje pytanie: tag blocktrans na akapit jest lepszym wyborem. Jeśli zmienisz akapit, to tylko ten akapit musi zostać sprawdzony przez tłumacza.

Odnośnie białych znaków i znaków nowej linii: domyślnie pliki te zostaną zapisane w plikach tłumaczeń PO. W Django 1.7 blocktrans będzie miał trimmed opcję, która usuwa spacje i znaki nowej linii (source):

Ta opcja usunie znaki nowej linii na początku i na końcu treści {% blocktrans%} tag, zmień dowolne białe znaki na początku i końcu linii i łączą wszystkie linie w jeden za pomocą znaku spacji, aby je oddzielić. Jest to przydatne do wcięcia zawartości znacznika {% blocktrans%} bez umieszczania znaków wcięcia w odpowiednim wpisie w pliku PO, co ułatwia proces tłumaczenia.

+0

Dziękuję Simeon! – RexE

Powiązane problemy