Перевод и оформление «Что если?»
В этом документе собраны краткие описания процессов, в рамках которых статьи проекта What If? переводятся и публикуются на сайте «Что если?». Документ предназначен для тех, кто хочет разобраться в том, как работает наша кухня переводов и как взаимодействуют между собой переводчики, — то есть главным образом для новых участников.
Основные принципы перевода
- Переводы публикуются каждую неделю, как правило, в понедельник (до 23:59 по московскому времени).
- Мы переводим и оформляем текст так, чтобы его было приятно читать, конвертируем единицы измерения, иногда поясняем неочевидные для русскоязычного читателя моменты.
- Мы очень внимательно относимся к тому, как именно написана статья. Мы стараемся не допускать пунктуационных, орфографических, смысловых ошибок и выдерживать стиль оригинала.
Да-да, это же написано и в разделе О нас :-).
Подготовка, перевод и публикация
Если вы переводчик, но по какой-то причине не имеете доступа к одному из упоминаемых далее ресурсов: не получаете писем о новом переводе из списка рассылки, не можете участвовать в групчате, или проблема в чем-то другом, — напишите нам.
- Рэндалл Монро публикует новую статью, координатор оформляет «главу» на Нотабеноиде и по почте (через список рассылки) уведомляет переводчиков. (См. раздел «Оформление „главы“ на Нотабеноиде».)
- Переводим фрагменты на Нотабеноиде и обсуждаем варианты перевода. Голосуем, чтобы облегчить работу тому, кто будет сводить выпуск. (См. раздел «Перевод» и рекомендации для переводчиков.)
- Когда перевод надписей на картинках устоялся, его нужно нарисовать (обычно мы занимаемся этим в день выпуска). Договариваемся о том, кто рисует, через групчат. (См. раздел «Отрисовка изображений».)
- Координатор сводит выпуск, учитывая комментарии к фрагментам и голосование. Иногда быстрые правки принимаются в ходе обсуждения в групчате.
- Обсуждаем в групчате варианты анонсов, обычно обсуждение инициирует координатор.
- Координатор публикует перевод и размещает ссылки во ВКонтакте и в Twitterʼе. Можно делать перепосты :-). (См. раздел «Размещение статьи на сайте».)
Обязанности координатора обычно выполняет Dront.
Оформление «главы» на Нотабеноиде
Статью нужно будет сконвертировать из html в markdown, поэтому потребуется утилита html2text или расширение StackEdit для Chrome.
Установка html2text
Для Windows:
- Устанавливаем интерпретатор Python c официального сайта.
- Для сборки сайта пока что необходима вторая версия, поэтому лучше скачивать «Latest Python 2 Release».
- При установке выбираем «Add python.exe to path».
- Скачиваем html2text.py. Этот файл нам и нужен.
Для Linux:
- Устанавливаем пакет html2text с помощью менеджера пакетов дистрибутива.
Конвертация и создание «главы» на Нотабеноиде
- Открываем исходный текст последней статьи What If? (Ctrl+U) и сохраняем все, что между тегами
<article>
и</article>
в файл (для примера:a.html
). - Конвертируем в markdown командой[1]:↲Если пакет установлен, но команды html2text нет, попробуйте pyhtml2text.↳
html2text -b0 a.html > a.md
, или через StackEdit: менюOpen from
→Convert HTML to Markdown
, вставляем текст между<atricle>
и</article>
, сохраняем вa.md
. - В полученном файле нужно:
- Добавить символы
>
в начало каждой строки с вопросом и «пустую» строку с символом>
перед указанием автора вопроса. - Изменить базу urlʼов картинок на
/uploads/NNN-article-name/
(например, /imgs/a/51/freefall_candy.png → /uploads/051-free-fall/freefall_candy.png). - Оформить текст с картинок и title-текст, как описано далее в этом разделе. (См. подраздел «Оформление текста с изображений».)
- Поправить знаки сносок:
[n]
→[^n]
. - Добавить текст сносок непосредственно после тех абзацев, где они эти сноски встречаются.
- Добавить символы
- Создаем новую «главу» в «книге» переводов What If?, импортируем в нее содержимое
a.md
, тип переносов строк:Два переноса
. - Проверяем разбивку на фрагменты. В первом фрагменте должно быть название выпуска.
- Отправляем переводчикам уведомление со ссылкой на «главу».
Ошибки html2text при работе на Windows:
Если при конвертировании выводятся сообщения вроде
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x97 in position 218: invalid start byte
значит нужно удалить «подозрительные» символы, обычно это тире или кавычки. Под Linux такой проблемы не возникает. (Может, Python3 решит проблему под Windows?)
Оформление текста с изображений
Для перевода просто помещаем надписи с картинки в [labels]
и [/labels]
, а title-текст в кавычках внутри круглых скобок после urlʼа. Выглядит это так:

[labels]
Sunlight
CO_{2}
Water
Photosynthesis
Food chain
Oil
Oil rigs
Water vapor
Cars
Speed
CO_{2}
[/labels]
Перевод
Часто используемая функциональность Markdown
У языка разметки Markdown много диалектов, но используемый нами в целом соответствует каноничному. Если быть точным, мы используем библиотеку Python-Markdown и соответствующий синтаксис. Здесь собраны часто используемые варианты оформления:
- Разметка текста:
*курсив*
,**жирный**
. - Ссылки:
[текст ссылки][1]
, ниже[1]: http://example.com "заголовок страницы"
. Ссылки должны оставаться человекочитаемыми: сокращать их и кодировать в %xx-нотацию не нужно (http://ru.wikipedia.org/wiki/Я
предпочтительнейhttp://ru.wikipedia.org/wiki/%D0%AF
). Если ссылка ведет на страницу нашего сайта, базовую часть лучше опустить:/page-name-here
. Для англоязычных материалов (за исключением видеороликов) заголовок приводится в переводе, но с указанием на язык страницы. - Изображения:
 "Всплывающий текст для изображения."
). Ссылка на картинку с нашего сайта обычно выглядит так:/uploads/id-slug/original_name.png
. (Про загрузку изображений см. раздел «Размещение статьи на сайте».) - Сноски:
Lorem ipsum[^1][^2] dolor sit amet, consectetur adipisicing elit[^a]
[^1]: Lorem ipsum — название классического текста-«рыбы».
[^2]:
Эта сноска содержит два параграфа.
Обратите внимание на расстановку отступов.
[^a]: Эта сноска отобразится как [#], и в конец добавится «— Прим. пер».
- Под- и надстрочный текст:
H_{2}O
иE=mc^{2}
. - Формулы оборачиваются в
$
(внутристрочные) или в$$
(на отдельной строке):$F_i(x)$
,$$F_i(x) = i*log_2(x)$$
. Часто нужны:- десятичная запятая:
$1{,}5$
→ $1{,}5$; - разделитель разрядов (тонкий пробел):
$10\,000$
→ $10\,000$; - текст (в т. ч. русский):
$10\text{ кг}$
→ $10\text{ кг}$; - знаки умножения и примерного равенства:
$2 \times 2 \approx 5$
→ $2 \times 2 \approx 5$.
- десятичная запятая:
- Если для статьи включены формулы (
Formulas: True
), то, чтобы знак доллара не воспринимался как начало или конец формулы, его нужно экранировать:от \$30 до \$40
. Если в строке один знак доллара, то экранировать его не обязательно, а если формулы выключены, то и вовсе нельзя: обратный слеш выведется рядом со знаком доллара. - Вопрос оформляется следующим образом:
> Что, если я соберусь поплавать в бассейне для отработанного ядерного топлива? Нужно ли мне нырять, чтобы получить фатальную дозу радиации? Насколько долго я смогу продержаться на поверхности?
>
> — Джонатан Бастьен-Филиатро
Рекомендации для переводчиков
В ходе работы у нас выработались определенные рекомендации для переводчиков. Получилось немало, поэтому теперь они живут на отдельной странице.
Отрисовка изображений
Для перевода картинок нам нужны две вещи: графический редактор (здесь инструкция для GIMP) и шрифт.
- Сборку GIMP для Windows можно скачать здесь, рекомендуется ставить последнюю стабильную версию.
- Шрифт можно скачать отсюда.
Интерфейс у GIMP не очень простой, но необходимые нам операции несложные:
- Сперва нам нужно удалить текст: выделяем его (
R
) и жмемDelete
. - Выбираем инструмент «Текст» (
T
), выбираем шрифт и размер, копируем перевод, позиционируем его. - Выбираем самый нижний слой (через
Ctrl+L
). Теперь снова можно выделять кусок картинки и очищать его.
На самом деле, для красивой отрисовки нужно совершить несколько больше действий, но их описание еще не подготовлено.
TODO: Перевести в markdown статьи про отрисовку XKCD на планшете и про отрисовку с помощью Sarkasm Ink в GIMP.
Размещение статьи на сайте
До начала работы
- На компьютере должны быть установлены:
- Python 2.7;
- Pelican;
- Fabric;
- Beautiful Soup 4;
- git;
- rsync (под Windows нет).
- Нужно зарегистрироваться на github.com (в т. ч. сгенерировать ключ) и убедиться, что вы включены в организацию whatifrussian.
- Передать публичный ключ (
id_rsa.pub
) librarian (aka Nikita Menkovich), чтобы он предоставил вам доступ к сайту. - Склонировать репозиторий website.
Размещение на сайте
Если установка Pelican и всего прочего свежая, то нужно убедиться, что все необходимое установлено корректно и работает. Для этого нужно перейти в терминале в директорию репозитория (website
) и выполнить fab build:local
— если выполнится успешно, значит, все в порядке (за исключением, возможно, rsync).
Публикация нового выпуска состоит из следующих шагов:
- Перейти в терминале в директорию репозитория (
website
). - Сделать заготовку для новой статьи (файл .md):
fab new:nnn
, где nnn — номер новой статьи. - Экспортировать статью из Notabenoidʼа в файл .md, выбрав нужные варианты.
- Добавить оригинальные и переведенные изображения.
- Собрать:
publish:dev
, проверить: http://dev.chtoes.li; поправить недочеты и повторить. - Отправить новый материал в основной репозиторий:
git add content && git commit -v && git push
.- Если что-то пошло не так, то дать команду
git pull -r
и попробовать заново с пункта 5.
- Если что-то пошло не так, то дать команду
- Опубликовать на сайте:
fab publish:prod
, проверить: https://chtoes.li. - Опубликовать во ВКонтакте и Twitterʼе.
Мы размещаем оригинальные изображения и их переводы в директории content/uploads/nnn-article-name
, где nnn
— номер статьи, а article-name
— ее название в нижнем регистре с заменой букв на дефисы. Названия переведенных изображений оканчиваются на _ru.png
и за исключением части _ru
совпадают с оригинальными. Если переводить на картинке нечего, то загружается только оригинал.
При проверке статьи в dev-версии сайта нужно убедиться, что отображаются именно переведенные картинки и, если это не так, скорректировать их urlʼы в тексте статьи (добавить _ru
перед .png
).