2013-11-22 2 views
11

Я только начинаю с интернационализации Django и пытаюсь понять лучшие практики использования {% blocktrans %}. Предпочтительно ли использовать один {% blocktrans %} для каждого абзаца, или мне нужно иметь один большой {% blocktrans %}, который содержит много абзацев?Django i18n: рекомендуемый размер и форматирование для блоков {% blocktrans%}?

Имея один большой {% blocktrans %} быстрее и делает мой шаблон взгляд чище, но меня беспокоит, что:

  • это вызывает HTML-теги (например, <p>...</p>), чтобы стать частью строки перевода
  • Если изменить одна вещь в одной части моего огромного блока, изменится msgid, что, похоже, может повлиять на другие абзацы. Если у меня меньше блоков, изменения будут более изолированными (я полагаю).
  • Если я вношу изменения форматирования, например добавление/удаление новой строки между абзацами, это изменит msgid.

Мне также интересно, как форматировать. Есть ли какие-либо осложнения, связанные с разрывами строк внутри {% blocktrans %}? Или иметь ведущие пространства? например:

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

Любые рекомендации приветствуются.

+0

Если у вас есть много вещей, чтобы положить в блоктранс, вы можете рассмотреть возможность использования какой-либо системы управления контентом - не обязательно полномасштабные cms, но, по крайней мере, что-то менее жесткое. –

+0

(Комментарий, написанный @brunodesthuilliers, относится к образцу кода, который у меня был в вопросе перед редактированием.) – RexE

+0

Это все еще имеет смысл. –

ответ

9

Несколько небольших {% blocktrans %} блоки полезны по различным причинам:

  • Каждая переводимые строки заканчивается в файлах перевода и эти файлы должны быть переводимым людьми, которые говорят на языке. Им не нужно иметь дело с правильностью HTML-тегов, но они должны чисто перевести несколько предложений на этот язык. Незначительная разметка в порядке, но не HTML всей страницы.

    Вы также можете думать об этом так: чем меньше разметка в переводимых строках, тем меньше шансов на ошибки переводчиков (у которых может быть или не может быть технический фон).

  • Если огромный блок переводов изменяется, все переводы должны быть выполнены снова каждым из переводчиков. Если вы используете небольшие переводимые блоки, вы можете повторно использовать большую часть существующих переведенных абзацев/текста, и вам нужно только обновить переводы для частей, которые действительно изменились.

Итак, чтобы ответить на ваш вопрос: ярлык blocktrans за абзац - лучший выбор. Если вы в конечном итоге меняете абзац, тогда только этот параграф должен быть снова проверен переводчиком.

Что касается пробелов и новых строк: по умолчанию они будут переведены в файлы перевода PO. В Django 1.7 blocktrans будет иметь trimmed вариант, который удаляет пробелы и переводы строк (source):

Эта опция удалит символы новой строки с начала и конца содержания {% blocktrans%} тег, заменить любые пробелы в начале и конце строки и объединить все строки в один, используя пробельный символ для их разделения. Это весьма полезно для отступов содержимого тега {% blocktrans%}, без ввода символов отступа в соответствующей записи в файле PO, что упрощает процесс перевода.

+0

Спасибо Симеон! – RexE

 Смежные вопросы

  • Нет связанных вопросов^_^