Перевод и оформление «Что если?»
В этом документе собраны краткие описания процессов, в рамках которых статьи проекта 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).
