Свершилось!


PostgreSQL приходит в Россию

Наша компания официально завершила перевод документации PostgreSQL текущей версии на русский язык и в этой публикации мы хотим поведать, как это было. Мы также хотели бы рассказать о пути, который мы прошли для достижения этой цели (и какие направления мы перепробовали), но это, пожалуй, тема для отдельной статьи.

Перевод самого PostgreSQL на русский язык начался в далёком 2001 году, тогда вышла только версия postgresql 7.1, и в самом postgresql усилиями в том числе и наших разработчиков только появлялась возможность локализации сообщений (см. тут). Впервые перевод сообщений на русский был включён в версию 7.2, вместе с переводами на французский, немецкий, шведский, китайский и чешский.

На дворе стояла кодировка KOI8-R. Windows 2000, Linux 2.4.1, RHEL 2.1, Debian Woody. pgadmin II. Ubuntu? Нет, не слышали.

В сообщениях сервера 7.2 на русский было переведено около 30% (881 сообщение из 3205). Документация к серверу 7.2 занимала около 1000 страниц. Январь 2005 — для версии 8.0 было переведено около 80% (2888 сообщений). Windows 2003, Linux 2.6.10, RHEL 4, Debian Sarge, Ubuntu — о, уже слышали, что-то с бородавками.

К версии 9.0 доля перевода снизилась до 64% (2765 сообщений).

Догнать и всё

Наконец, в 2012 на версии 9.2 мы догнали — 100% (6388 сообщений). (Сейчас в версии 9.5 переведены 7675 сообщений. Размер сообщений с переводом около 1.8 Мбайта.)

После этого захотелось большего. Большего, чем перевод pgadmin'а и его сайта. Гораздо большего. И большее нашлось — документация. На официальном сайте имелись ссылки только на французский и японский переводы. Это вызов! На момент выхода 9.3 документация занимала уже около 2000 страниц (не считая Release Notes), так что это снова вызов! Нельзя не заметить, что попытки перевода документации уже предпринимались. Похоже, самая первая, о которой сохранились сведения — это перевод документации для версии 6.5.2, выполненный тогда наверняка молодыми и горячими ребятами из Сергиева Посада ещё в XX веке н.э.

Потом был ещё один перевод, уже в наше время, однако он не был полным, да и качество его оставляло желать. Можно найти следы и ещё одной попытки, тоже не увенчавшейся. Поэтому было решено, что проще нового завести, чем этого отмыть. И в другой семье.

В начале 2013 года был закончен и опубликован перевод двух первых разделов документации (около 400 стр.). В 2015 образовалась наша компания, которая выбрала одной из своих первоочередных задач полный перевод документации. И работа закипела. На входе мы имели документацию по версии 9.4 на 2000 стр. и переведённое начало на 400. В июне было переведено 25%, в декабре 57%, в апреле перевод документации для 9.4 был закончен. В мае 2016 перевод синхронизирован с версией 9.5 и мы получили полностью русскую документацию (объёмом 2xxx страниц, объём сырого текста вместе с переводом ~18 Мбайт).

Получился вот такой рельеф:

Море текста

И наконец, в настоящее время мы идём вровень с версией 9.6 (beta2, beta3, ...) и выпустим полную документацию на русском языке в момент выхода продукта.

К нашему счастью, нам удалось воспользоваться специализированной версией РУS-Studio, проходящей закрытое тестирование. Благодаря этому мы смогли проверять текст на стадии перевода и выявлять ошибки, некоторые из которых мы забавы ради и рассмотрим ниже. Ошибки наши, так что имеем право, хотя такие типы ошибок встречаются повсеместно.

Наши жемчужины
Когда клиентское приложение соединяется с сервером, оно указывает, имя пользователя PostgreSQL, так же как и при обычном логине пользователя в Unix-like ОС.
Предупреждение РУS-Studio: W203 English-like-предложение detected.

Это обеспечивает более высокий уровень надёжности, но только в случае внимательной работы системного администратора при установке и настройке этих двух серверов.
Вопрос РУS-Studio: Q088 А насколько внимательна твоя работа?

Например, в процессе жизненного цикла приложения 10% изменений являются важными данными клиентов, другие 90% изменений менее важны для бизнеса и могут быть легко восстановлены при их потере (например, чат между пользователями).
Оригинал:
For example, an application workload might consist of: 10% of changes are important customer details, while 90% of changes are less important data that the business can more easily survive if it is lost, such as chat messages between users.
Ошибка РУS-Studio: A000 Нарушение ложности: «Рабочая нагрузка» != «Жизненный цикл»
Ошибка РУS-Studio: A000 Нарушение ложности: «Бизнес выжил» != «Восстановлен чат между пользователями»

Пользователи должны понимать, что таблицы, подвергающиеся высокой нагрузке на обновление на ведущем сервере с большей вероятностью могут вызвать отмену длительных запросов на резервном.
Ошибка РУS-Studio: R005 Ахисложносочинённое предложение.
Вопросы РУS-Studio: Q075 Нагрузка на ЛОЛ-что? Таблицы подвергаются ЛОЛ-чему? Таблицы могут ЛОЛ-вызвать?

В обычном (не восстановительном) режиме, выполнение команды DROP USER или DROP ROLE для роли, которая обладает возможностью подключения и пользователь сейчас подключён, для этого пользователя ничего не происходит — он продолжает оставаться подключённым.
Ошибка РУS-Studio: B901 Разрыв шаблона.

Исчерпание квоты вызовет такие же плохие последствия как и отсутствие самого места на диске.
Предупреждение РУS-Studio: W051 Степень кривизны предложения превышает приемлемый уровень во второй производной.

Триггерные функции должны использовать version 1 интерфейса диспетчера функций.
Ошибка РУS-Studio: R00E Выявлен текст на англусском языке.

Позволяет создаваемому пользователю открывать сессии. Это поведение по умолчанию.
Оригинал:
The new user will be allowed to log in (that is, the user name can be used as the initial session user identifier). This is the default.
Ошибка РУS-Studio: L102 Обнаружено сжатие с потерями.

Так как данные базы могут изменяться во время создания копии, то оценка может быть лишь приблизительной и не давать точности в 100%.
Оригинал:
Since the database may change during the backup, this is only an approximation and may not end at exactly 100%.
Ошибка РУS-Studio: MU003 Выявлены признаки непонимания смысла.

Вывести путь размещения кода объектов библиотек.
Оригинал:
Print the location of object code libraries.
Ошибка РУS-Studio: N3!: Неверное решение задачи комбинаторики.

На платформах, где это поддерживается, сервер будет пытаться фиксировать снимки памяти при авариях. Это позволяет диагностировать и предотвращать потенциальные проблемы в будущем.
Оригинал:
Attempt to allow server crashes to produce core files, on platforms where this is possible, by lifting any soft resource limit placed on core files. This is useful in debugging or diagnosing problems by allowing a stack trace to be obtained from a failed server process.
Предупреждение РУS-Studio: Выявлено упрощение предложения как решение проблемы недопонимания.

Игнорировать ожидание завершения запуска или остановки сервера.
Оригинал:
Do not wait for startup or shutdown to complete.
Предложение РУS-Studio: S021 Людям со сложным внутренним миром к применению: «Не игнорируй ожидание меня».

Все эти ошибки были безжалостно исправлены, но если вы, изучая документацию в нашем пиреводе, встретите другие, пишите нам. Мы очень надеемся, что наша документация будет такой же качественной, как и оригинальная.

Вы спросите: А зачем вообще нужно было переводить действительно очень толковую документацию? Конечно, тот, кто задаёт этот вопрос, уже читал оригинальную и, значит, способен понимать по-английски, и наверное, будет и дальше читать её, и возможно, не менее увлекательные списки рассылки.

Однако для тех, кто ещё не знаком с этой замечательной СУБД, отсутствие достаточного знания английского языка, по нашему глубокому убеждению, не должно быть препятствием для её изучения. Это и начинающие администраторы/разработчики, и студенты, и даже школьники (да, в документации есть материал, посвящённый основам SQL, который мог бы быть понятен и ежу).

Кроме того, именно то, что она очень толковая, уже само по себе оправдывает усилия по её переводу. К тому же, взяв наш перевод за основу, мы разрабатываем учебные пособия и курсы с тем же уровнем качества и полноты материала, который мы можем найти в оригинале.

И наконец, наш продукт Postgres Pro, построенный на базе PostgreSQL, включён в реестр отечественного ПО, а значит, ориентирован прежде всего на русскоязычных пользователей и должен иметь русскую документацию. Перевод же ванильной версии — это наш вклад в развитие всего русскоязычного сообщества postgres.

Как итог месяцам и мегабайтам проделанной работы, состоявшееся событие выразилось в появлении в списке переводов на странице https://www.postgresql.org/docs/ скромной ссылки Russian.

Welcome!
Поделиться с друзьями
-->

Комментарии (36)


  1. Dimd13
    12.08.2016 12:19
    +2

    Спасибо за отличную новость


  1. maydjin
    12.08.2016 12:42
    +15

    Хорошее дело делаете, это не линтер вс какой нить.


    РУS-Studio

    Сначала начал искать по тексту единорогов.


    1. heleo
      12.08.2016 14:42

      Ага, значит мне не показалось что в 6й версии «ВС» перевода не было от слова совсем ))


  1. burdin
    12.08.2016 12:44
    +1

    Хорошая БД. Отличный перевод. Спасибо большое!


  1. abstractbug
    12.08.2016 12:50
    +1

    Перевод это хорошо, осталось чтобы он оставался всегда актуальным, иначе получиться что провели просто большую и бесполезную работу. Собственно это основная причина отсутствия переводов — они слишком быстро теряют актуальность.


    1. xclusn
      12.08.2016 13:25
      +2

      Из опыта: различия между версиями (9.5 и 9.6) составляют в пределах 5% от объёма перевода, версии выходят раз в полгода, так что если не случится форс-мажор и потребность в переводе сохранится, поддерживать его актуальность будет уже не так сложно. Более того, мы рассматриваем возможность предоставить средства для коллективного участия в переводе, в том или ином виде, что также этому посбособствует.


      1. symbix
        12.08.2016 18:08

        О, а я почему-то изначально подумал, что исходники перевода общедоступны для postgresql-сообщества. Какой смысл их скрывать? Почему бы просто не выложить переведенный doc/src на github?


        1. xclusn
          12.08.2016 18:11
          +4

          Правильно подумали! Вот они: https://github.com/pluzanov/pg-doc-ru/
          Речь не об исходниках, а о том, как организовать удобную работу с переводом — что-то типа transifex…


          1. symbix
            12.08.2016 18:15

            А, ну это, мне кажется, уже необязательные свистелки. С задачей поиска устаревших частей перевода вполне можно справиться шелл-скриптингом вокруг git, а для ревью переводов вполне подойдут и пулл-реквесты на гитхабе.


            1. xclusn
              12.08.2016 18:23
              +1

              Да, с этой задачей мы уже справляемся. Выше было высказано небеспочвенное опасение, что актуальность может быть потеряна. Я попытался описать наш подход к решению этой проблемы — упрощение участия в переводе.
              Одно дело зайти на сайт и перевести/скорректировать десяток строк в удобном интерфейсе, другое дело — делать это как-то автономно, потом пулл-реквесты и т. д. Собственно этот путь людьми уже пройден (опять же transifex), надо просто взять на вооружение.


              1. symbix
                12.08.2016 19:58
                +2

                Понятно.

                Мне кажется, для начала неплохо бы упомянуть об этом гитхаб-репозитории в переведенной документации. Например, в docguide. А то ведь никто и не узнает :)


          1. pasha_golub
            14.08.2016 21:16

            Так, а почему бы действительно не пользоваться транзифексом? Для опен сорса он бесплатен


            1. xclusn
              15.08.2016 10:41

              Глубоко этот вопрос ещё не изучали, но пока видятся сложности, связанные с некоторой спецификой текста:
              а) Фрагменты бывают довольно длинными, 1000 символов и больше — в интерфейсе Transifex'а, который я вижу, переводить их будет неудобно.
              б) Желательно работать с моноширинным шрифтом, так как в документации встречаются, например, таблицы, оформленные пробелами.
              в) Довольно много отдельных файлов ~ 360.


  1. Akvel
    12.08.2016 13:00

    А можно нескромный вопрос, а зачем вы занимаетесь переводом официальной документации?


    1. xclusn
      12.08.2016 13:06
      +6

      А мы, предвидя этот вопрос, прямо в статье на него и ответили. Ну или вот мнение очень авторитетного человека в мире postgres:
      Yes, this takes Russian adoption of Postgres to a new level!
      Рассчитываем на то, что так оно и будет.


    1. ivanych
      12.08.2016 13:06
      +1

      > Вы спросите: А зачем вообще нужно было переводить действительно очень толковую документацию?

      Этого абзаца не было в статье в тот момент, когда Вы её читали?


    1. ky0
      12.08.2016 13:09
      +5

      Ну как же? Потенциальное импортозамещение обязывает, тендер с «лет ми спик фром май хартом» не выиграешь.


    1. symbix
      12.08.2016 13:19
      +5

      Это как раз очевидно: https://reestr.minsvyaz.ru/reestr/65273/

      А вот за то, что не придержали перевод для своего форка, а передают труды сообществу — им честь и хвала.


  1. Toshiro
    12.08.2016 13:03
    -10

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


  1. Ogoyukin
    12.08.2016 13:19
    +12

    Спасибо Большое за ВАШ Труд


  1. ivlevdenis_ru
    12.08.2016 13:26

    На сайте http://postgresql.ru.net/manual/index.html тоже были зачатки перевода.


  1. hudson
    12.08.2016 13:35
    +1

    Ребята, а не поделитесь опытом, как вы поддерживаете перевод? Я в своё время срубился именно на поддержке — часто апдейт статьи приводил к ее полному переводу, когда, например куча изменений как по стилю изложения и по функциональности на протяжении всей статьи.

    Может есть какие устоявшиеся практики или у вас наработались какие-то трюки?


    1. xclusn
      12.08.2016 14:09
      +4

      Да, есть в планах рассказать о технологиях (в отдельной статье). Если в общих чертах, то минимум изобретений, в основном используем средства gettext, плюс очень помогает то, что работа над документацией параллельно с исходным кодом ведётся в git. Ещё больше помогает, что исходный материал очень качественный и таких случаев, как пришла Агата Кристи и переписала всё, что до этого писал Конан Дойл, я не припомню. Наверное с хуже проработанной изначально документацией проблем было бы больше.


      1. hudson
        12.08.2016 16:44

        Будет интересно почитать, заранее спасибо!


  1. cleaner_it
    12.08.2016 13:36

    Спасибо вам огромное!


  1. Nastradamus
    12.08.2016 14:03
    +3

    РУS-Studio — не выдуманный софт, случайно? Нигде не смог найти это чудо в поисковиках.


    1. VioletGiraffe
      12.08.2016 14:17
      +2

      Вот мне тоже интересно) Например, я не знал, что natural language processing уже дорос до такого уровня.


    1. xclusn
      12.08.2016 14:45
      +4

      Если кратко, то — да. Это будущая перспективная разработка, для которой мы пока собираем входные данные.


      1. Evengard
        12.08.2016 15:20
        +1

        То-то сообщения об ошибках показались… Гхм, «пред-альфными».


    1. Ogoun
      12.08.2016 15:34

      Есть существуюшие, хотя и намного более примитивные варианты, например Главред


    1. kyern
      12.08.2016 15:39
      +5

      Это отсылочка к ребятам из PVS-Studio и их статическому анализатору кода. (Либо я просто не могу в сарказм)


  1. khrisanfov
    12.08.2016 16:39

    Спасибо огромное! Представляю сколько на это ушло времени.


  1. chernigoff
    12.08.2016 18:06

    Года 3 использую постгрес, в доку заглядывал лишь раз, и уже не помню зачем. Чаще нахожу решения своих проблем на stackoverflow. Спасибо, может быть пригодиться.


  1. echo_mont
    13.08.2016 06:32

    это хорошо. И прекрасно.
    Но как он коннектит с последним glassfish и все это вместе на IJ собирается?


    1. xclusn
      14.08.2016 16:53

      Думаю, что в поисках конструктивного обсуждения и решения этого вопроса стоит воспользоваться формой обратной связи на нашем сайте. То, что ваш вопрос всплыл в этих комментариях, говорит о большой заинтересованности в его решении, так что остаётся только направить необходимые ресурсы в нужное русло


  1. xclusn
    14.08.2016 16:51

    -