From e3e015f1cb812830b03e8c309edbd584243a9e7e Mon Sep 17 00:00:00 2001 From: Konstantin Lyssenko Date: Sun, 6 Oct 2019 01:37:15 +0600 Subject: [PATCH 1/7] Translate `Is React translated yet` blog post --- .../2019-02-23-is-react-translated-yet.md | 82 +++++++++---------- src/templates/blog.js | 6 +- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/content/blog/2019-02-23-is-react-translated-yet.md b/content/blog/2019-02-23-is-react-translated-yet.md index f88698a66..89a8e38aa 100644 --- a/content/blog/2019-02-23-is-react-translated-yet.md +++ b/content/blog/2019-02-23-is-react-translated-yet.md @@ -1,76 +1,76 @@ --- -title: "Is React Translated Yet? ¡Sí! Sim! はい!" +title: "Переведен ли уже React? ¡Sí! Sim! はい!" author: [tesseralis] --- -We’re excited to announce an ongoing effort to maintain official translations of the React documentation website into different languages. Thanks to the dedicated efforts of React community members from around the world, React is now being translated into *over 30* languages! You can find them on the new [Languages](/languages) page. +Мы рады объявить о работе над поддержкой официальных переводов документации React на другие языки. Благораря усердным усилиям сообщества React по всему миру, React переводится на *более, чем 30 языков*! Их можно найти на новой странице -- [переводы](/languages). -In addition, the following three languages have completed translating most of the React Docs! 🎉 +Также, переводы для следующих трех языков уже полностью завершены! -* **Spanish: [es.reactjs.org](https://es.reactjs.org)** -* **Japanese: [ja.reactjs.org](https://ja.reactjs.org)** -* **Brazilian Portuguese: [pt-br.reactjs.org](https://pt-br.reactjs.org)** +* **Испанский: [es.reactjs.org](https://es.reactjs.org)** +* **Японский: [ja.reactjs.org](https://ja.reactjs.org)** +* **Бразильский португальский: [pt-br.reactjs.org](https://pt-br.reactjs.org)** -Special congratulations to [Alejandro Ñáñez Ortiz](https://github.com/alejandronanez), [Rainer Martínez Fraga](https://github.com/carburo), [David Morales](https://github.com/dmorales), [Miguel Alejandro Bolivar Portilla](https://github.com/Darking360), and all the contributors to the Spanish translation for being the first to *completely* translate the core pages of the docs! +Отдельно хотелось бы поздравить [Alejandro Ñáñez Ortiz](https://github.com/alejandronanez), [Rainer Martínez Fraga](https://github.com/carburo), [David Morales](https://github.com/dmorales), [Miguel Alejandro Bolivar Portilla](https://github.com/Darking360) и всех участвоваших в переводе испанского перевода с тем, что они стали первыми, кто *полностью* перевел основные страницы документации! -## Why Localization Matters {#why-localization-matters} +## Почему важна локализация {#why-localization-matters} -React already has many meetups and conferences around the world, but many programmers don't use English as their primary language. We’d love to support local communities who use React by making our documentation available in most popular languages. +По React уже проводится множество конференций и митапов по всему миру, но далеко не для всех программистов английский язык является основным. Нам бы очень хотелось поддержать местные сообщества, сделав нашу документацию доступной на наиболее популярных языках. -In the past, React community members have created unofficial translations for [Chinese](https://github.com/discountry/react), [Arabic](https://wiki.hsoub.com/React), and [Korean](https://github.com/reactjs/ko.reactjs.org/issues/4); by making an official channel for these translated docs we're hoping to make them easier to find and help make sure that non-English-speaking users of React aren't left behind. +В прошлом участники React-сообщества написали неофициальные переводы на [китайском](https://github.com/discountry/react), [арабском](https://wiki.hsoub.com/React), and [корейском](https://github.com/reactjs/ko.reactjs.org/issues/4); мы надеемся, что благораря официальному каналу для этих переводов, их станет проще найти, и что люди, не говорящие на английском языке, не останутся позади. -## Contributing {#contributing} +## Помощь проекту {#contributing} -If you would like to help out on a current translation, check out the [Languages](/languages) page and click on the "Contribute" link for your language. +Если вам хочется помочь с данным переводом, посетите страницу [переводов](/languages) и нажмите на ссылку «‎Contribute»‎ у вашего языка. -Can't find your language? If you'd like to maintain your language's translation fork, follow the instructions in the [translation repo](https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation)! +Не можете найти свой язык? Если вы хотите мейнтейнить форк перевода на ваш язык, следуйте инструкциям в [репозитории переводов](https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation)! -## Backstory {#backstory} +## Предыстория {#backstory} -Hi everyone! I'm [Nat](https://twitter.com/tesseralis)! You may know me as the [polyhedra lady](https://www.youtube.com/watch?v=Ew-UzGC8RqQ). For the past few weeks, I've been helping the React team coordinate their translation effort. Here's how I did it. +Здравствуйте! Я [Nat](https://twitter.com/tesseralis)! Я могу быть вам известна как [леди с полиэдрами](https://www.youtube.com/watch?v=Ew-UzGC8RqQ). Последние несколько недель я помогала команде React координировать перевод. Вот, как я это сделала. -Our original approach for translations was to use a SaaS platform that allows users to submit translations. There was already a [pull request](https://github.com/reactjs/reactjs.org/pull/873) to integrate it and my original responsibility was to finish that integration. However, we had concerns about the feasibility of that integration and the current quality of translations on the platform. Our primary concern was ensuring that translations kept up to date with the main repo and didn't become "stale". +Поначалу мы использовали SaaS-платформу для обработки переводов от пользователей. Для этого был даже оформлен [пулреквест](https://github.com/reactjs/reactjs.org/pull/873), и моей первоначальной обязанностью было закончить данную интеграцию. Однако мы беспокоились о ее эффективности и качестве переводов на данной платформе. В первую очередь мы хотели, чтобы переводы не отставали от основного репозитория и не становились заброшенными. -[Dan](https://twitter.com/dan_abramov) encouraged me to look for alternate solutions, and we stumbled across how [Vue](https://vuejs.org) maintained its translations -- through different forks of the main repo on GitHub. In particular, the [Japanese translation](https://jp.vuejs.org) used a bot to periodically check for changes in the English repo and submits pull requests whenever there is a change. +[Dan](https://twitter.com/dan_abramov) смотивировал меня найти альтернативное решение, и мы натолкнулись на подход [Vue](https://vuejs.org) к поддержке своих переводов -- при помощи различных форков основного репозитория на Github. В частности, [японский перевод](https://jp.vuejs.org) использовал бота для проверки изменений в английском репозитории и создания пулреквестов в случае, если они появились. -This approach appealed to us for several reasons: +Нам понравился такой подход по нескольким причинам: -* It was less code integration to get off the ground. -* It encouraged active maintainers for each repo to ensure quality. -* Contributors already understand GitHub as a platform and are motivated to contribute directly to the React organization. +* Для запуска требовалось меньше кода. +* Активные участники каждого репозитория получали стимул сдедить за качеством. +* Github уже привычен и понятен для сообщества и его участники мотивированы вносить вклад напрямую в организацию React. -We started off with an initial trial period of three languages: Spanish, Japanese, and Simplified Chinese. This allowed us to work out any kinks in our process and make sure future translations are set up for success. I wanted to give the translation teams freedom to choose whatever tools they felt comfortable with. The only requirement is a [checklist](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md) that outlines the order of importance for translating pages. +Мы начали с пробного периода для трех языков: испанского, японского и с упрощенного китайского. Это позволило нам выработать методику и принять меры, чтобы с будущими переводами не возникало проблем. Я хотела, чтобы команды по переводам имели свободу выбора удобных им инструментов. Единственным требованием стал [чек-лист](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md), описывающий порядок перевода страниц. -After the trial period, we were ready to accept more languages. I created [a script](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js) to automate the creation of the new language repo, and a site, [Is React Translated Yet?](https://isreacttranslatedyet.com), to track progress on the different translations. We started *10* new translations on our first day alone! +По окончании пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, и веб-сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (Переведен ли уже React?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! -Because of the automation, the rest of the maintenance went mostly smoothly. We eventually created a [Slack channel](https://rt-slack-invite.herokuapp.com) to make it easier for translators to share information, and I released a guide solidifying the [responsibilities of maintainers](https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md). Allowing translators to talk with each other was a great boon -- for example, the Arabic, Persian, and Hebrew translations were able to talk to each other in order to get [right-to-left text](https://en.wikipedia.org/wiki/Right-to-left) working! +Благодаря этой автоматизации, последующая поддержка проекта по большей части шла гладко. Позже мы создали [Slack-канал](https://rt-slack-invite.herokuapp.com), чтобы переводчики могли более удобно делиться информацией; также я выпустила руководство, которое закрепило [обязанности мейнтейнеров сообщества](https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md). Платформа для общения между переводчиками себя показала отлично -- к примеру, переводчики арабского, персидского и иврита смогли вместе добиться отображения [текста справа налево](https://en.wikipedia.org/wiki/Right-to-left)! -## The Bot {#the-bot} +## Бот {#the-bot} -The most challenging part was getting the bot to sync changes from the English version of the site. Initially we were using the [che-tsumi](https://github.com/vuejs-jp/che-tsumi) bot created by the Japanese Vue translation team, but we soon decided to build our own bot to suit our needs. In particular, the che-tsumi bot works by [cherry picking](https://git-scm.com/docs/git-cherry-pick) new commits. This ended up causing a cavalade of new issues that were interconnected, especially when [Hooks were released](/blog/2019/02/06/react-v16.8.0.html). +Самой сложной задачей была синхронизация изменений с английской версией сайта. Сперва мы использовали бота [che-tsumi](https://github.com/vuejs-jp/che-tsumi), которого разработала команда японского перевода Vue, но позже решили разработать собственного бота, который бы удовлятворял нашим нуждам. Если быть точной, то нас не устраивала кавалькада новых связанных между собой ишью, которые создавались после [выборочного применения](https://git-scm.com/docs/git-cherry-pick) новых коммитов ботом che-tsumi. Это стало особенно заметно после [релиза хуков](/blog/2019/02/06/react-v16.8.0.html). -In the end, we decided that instead of cherry picking each commit, it made more sense to merge all new commits and create a pull request around once a day. Conflicts are merged as-is and listed in the [pull request](https://github.com/reactjs/pt-BR.reactjs.org/pull/114), leaving a checklist for maintainers to fix. +В итоге мы решили, что вместо выборочного применения каждого коммита целесообразнее будет сливать все новые коммиты в один пулреквест где-то по разу в день. Конфликты сливаются как есть и перечисляются в [пулреквесте](https://github.com/reactjs/pt-BR.reactjs.org/pull/114) с чек-листом правок для мейнтейнеров. -Creating the [sync script](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) was easy enough: it downloads the translated repo, adds the original as a remote, pulls from it, merges the conflicts, and creates a pull request. +Создать [скрипт для синхронизации](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) было довольно просто: он скачивает переведенный репозиторий, добавляет в его удаленные репозитории оригинальный, стягивает его изменения и создает пулреквест. -The problem was finding a place for the bot to run. I'm a frontend developer for a reason -- Heroku and its ilk are alien to me and *endlessly* frustrating. In fact, until this past Tuesday, I was running the script by hand on my local machine! +Проблемой стал поиск места для запуска бота. Фронтенд-разработчицей я являюсь неспроста -- Heroku и подобные ему сервисы мне чужды и полностью выбивают меня из колеи. К слову, до прошлого вторника я запускала скрипт на своем персональном компьютере вручную! -The biggest challenge was space. Each fork of the repo is around 100MB -- which takes minutes to clone on my local machine. We have *32* forks, and the free tiers or most deployment platforms I checked limited you to 512MB of storage. +Самая большая загвоздка заключалась в дисковом пространстве -- каждый форк репозитория занимает около 100MB и моему компьютеру необходимо несколько минут для скачивания. Форков у нас *32*, а бесплатные планы большинства платформ для деплоймента, которые я рассматривала, предоставляли лишь 512MB пространства. -After lots of notepad calculations, I found a solution: delete each repo once we've finished the script and limit the concurrency of `sync` scripts that run at once to be within the storage requirements. Luckily, Heroku dynos have a much faster Internet connection and are able to clone even the React repo quickly. +Пересчитав все множество раз в notepad'е, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, у Heroku dynos интернет-соединение будет получше моего, и они могут быстро скачать даже репозиторий React. -There were other smaller issues that I ran into. I tried using the [Heroku Scheduler](https://elements.heroku.com/addons/scheduler) add-on so I didn't have to write any actual `watch` code, but it end up running too inconsistently, and I [had an existential meltdown on Twitter](https://twitter.com/tesseralis/status/1097387938088796160) when I couldn't figure out how to send commits from the Heroku dyno. But in the end, this frontend engineer was able to get the bot working! +Я также столкнулась и с другими небольшими проблемами. Я опробовала аддон [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), благодаря которому мне не пришлось написать ни строчки `watch`-кода, но он работал нестабильно; а еще меня [охватил экзистенциальный кризис](https://twitter.com/tesseralis/status/1097387938088796160), когда я не смогла разобраться, как отправлять коммиты из Heroku dyno. Но в конечном итоге фронтенд-разработчица в моем лице смогла завести этого бота! -There are, as always, improvements I want to make to the bot. Right now it doesn't check whether there is an outstanding pull request before pushing another one. It's still hard to tell the exact change that happened in the original source, and it's possible to miss out on a needed translation change. But I trust the maintainers we've chosen to work through these issues, and the bot is [open source](https://github.com/reactjs/reactjs.org-translation) if anyone wants to help me make these improvements! +Само собой, боту есть, куда улучшаться. В данный момент он не проверяет, есть ли открытые пулреквесты, перед тем, как отправить очередной. Также все еще трудно определить точные изменения оригинала, и есть шанс пропустить места, нуждающиеся в новом переводе. Однако я доверяю мейнтейнерам, которых мы выбрали для решения этих проблем, к тому же код бота находится в [открытом доступе](https://github.com/reactjs/reactjs.org-translation), если кто-то вдруг решится помочь мне с данными улучшениями! -## Thanks {#thanks} +## Благодарность {#thanks} -Finally, I would like to extend my gratitude to the following people and groups: +Наконец, мне хотелось бы выразить свою признательность следующим людям и командам: - * All the translation maintainers and contributors who are helping translate React to more than thirty languages. - * The [Vue.js Japan User Group](https://github.com/vuejs-jp) for initiating the idea of having bot-managed translations, and especially [Hanatani Takuma](https://github.com/potato4d) for helping us understand their approach and helping maintain the Japanese translation. - * [Soichiro Miki](https://github.com/smikitky) for many [contributions](https://github.com/reactjs/reactjs.org/pull/1636) and thoughtful comments on the overall translation process, as well as for maintaining the Japanese translation. - * [Eric Nakagawa](https://github.com/ericnakagawa) for managing our previous translation process. - * [Brian Vaughn](https://github.com/bvaughn) for setting up the [languages page](/languages) and managing all the subdomains. +* Всем мейнтейнерам переводов и участникам сообщества, помогающим с переводом React более чем на 30 языков. +* [Vue.js Japan User Group](https://github.com/vuejs-jp) -- за идею контролировать перевод при помощи бота, и особая благодарность -- [Hanatani Takuma](https://github.com/potato4d) за помощь в понимании их подхода, а также поддержку японского перевода. +* [Soichiro Miki](https://github.com/smikitky) -- за многочисленный [вклад](https://github.com/reactjs/reactjs.org/pull/1636) и содержательные комментарии касательно всего процесса перевода, а также за помощь с поддержкой японского перевода. +* [Eric Nakagawa](https://github.com/ericnakagawa) -- за организацию нашего предыдущего процесса перевода. +* [Brian Vaughn](https://github.com/bvaughn) -- за настройку [страницы переводов](/languages) и за администрирование всех поддоменов. - And finally, thank you to [Dan Abramov](https://twitter.com/dan_abramov) for giving me this opportunity and being a great mentor along the way. +И напоследок, огромное спасибо [Dan Abramov](https://twitter.com/dan_abramov) за то, что дал мне эту возможность, и, конечно же, за его замечательные наставления. diff --git a/src/templates/blog.js b/src/templates/blog.js index 57967afcc..db7b05bd8 100644 --- a/src/templates/blog.js +++ b/src/templates/blog.js @@ -12,7 +12,7 @@ import {createLinkBlog} from 'utils/createLink'; const toSectionList = allMarkdownRemark => [ { - title: 'Recent Posts', + title: 'Последние посты', items: allMarkdownRemark.edges .map(({node}) => ({ id: node.fields.slug, @@ -20,7 +20,7 @@ const toSectionList = allMarkdownRemark => [ })) .concat({ id: '/blog/all.html', - title: 'All posts ...', + title: 'Все посты ...', }), }, ]; @@ -57,7 +57,7 @@ export const pageQuery = graphql` } } fields { - date(formatString: "MMMM DD, YYYY") + date(formatString: "DD MMMM, YYYY", locale: "ru") path slug } From ebae60edb920446c54d62df69ad537370a932358 Mon Sep 17 00:00:00 2001 From: Konstantin Lyssenko Date: Sun, 6 Oct 2019 02:16:58 +0600 Subject: [PATCH 2/7] Fix stylistics --- .../2019-02-23-is-react-translated-yet.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/content/blog/2019-02-23-is-react-translated-yet.md b/content/blog/2019-02-23-is-react-translated-yet.md index 89a8e38aa..8c49270b0 100644 --- a/content/blog/2019-02-23-is-react-translated-yet.md +++ b/content/blog/2019-02-23-is-react-translated-yet.md @@ -17,51 +17,51 @@ author: [tesseralis] По React уже проводится множество конференций и митапов по всему миру, но далеко не для всех программистов английский язык является основным. Нам бы очень хотелось поддержать местные сообщества, сделав нашу документацию доступной на наиболее популярных языках. -В прошлом участники React-сообщества написали неофициальные переводы на [китайском](https://github.com/discountry/react), [арабском](https://wiki.hsoub.com/React), and [корейском](https://github.com/reactjs/ko.reactjs.org/issues/4); мы надеемся, что благораря официальному каналу для этих переводов, их станет проще найти, и что люди, не говорящие на английском языке, не останутся позади. +Участники React-сообщества уже написали неофициальные переводы на [китайском](https://github.com/discountry/react), [арабском](https://wiki.hsoub.com/React), and [корейском](https://github.com/reactjs/ko.reactjs.org/issues/4); мы надеемся, что официальный канал для этих переводов упростит их поиск, и люди, не говорящие на английском языке, не останутся за бортом. ## Помощь проекту {#contributing} -Если вам хочется помочь с данным переводом, посетите страницу [переводов](/languages) и нажмите на ссылку «‎Contribute»‎ у вашего языка. +Если вам хочется помочь с переводом, посетите страницу [переводов](/languages) и нажмите на ссылку «‎Contribute»‎ у вашего языка. -Не можете найти свой язык? Если вы хотите мейнтейнить форк перевода на ваш язык, следуйте инструкциям в [репозитории переводов](https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation)! +Не можете найти свой язык? Если хотите мейнтейнить форк перевода на ваш язык, следуйте инструкциям в [репозитории переводов](https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation)! ## Предыстория {#backstory} Здравствуйте! Я [Nat](https://twitter.com/tesseralis)! Я могу быть вам известна как [леди с полиэдрами](https://www.youtube.com/watch?v=Ew-UzGC8RqQ). Последние несколько недель я помогала команде React координировать перевод. Вот, как я это сделала. -Поначалу мы использовали SaaS-платформу для обработки переводов от пользователей. Для этого был даже оформлен [пулреквест](https://github.com/reactjs/reactjs.org/pull/873), и моей первоначальной обязанностью было закончить данную интеграцию. Однако мы беспокоились о ее эффективности и качестве переводов на данной платформе. В первую очередь мы хотели, чтобы переводы не отставали от основного репозитория и не становились заброшенными. +Поначалу мы использовали SaaS-платформу для обработки переводов от пользователей. Для этого был даже оформлен [пулреквест](https://github.com/reactjs/reactjs.org/pull/873), и изначально я должна была закончить эту интеграцию. Но мы боялись, что из этого ничего путного не получится, а качество переводов оставит желать лучшего. В первую очередь мы хотели, чтобы переводы не отставали от основного репозитория и не оказывались на «‎свалке». -[Dan](https://twitter.com/dan_abramov) смотивировал меня найти альтернативное решение, и мы натолкнулись на подход [Vue](https://vuejs.org) к поддержке своих переводов -- при помощи различных форков основного репозитория на Github. В частности, [японский перевод](https://jp.vuejs.org) использовал бота для проверки изменений в английском репозитории и создания пулреквестов в случае, если они появились. +[Dan](https://twitter.com/dan_abramov) смотивировал меня найти альтернативное решение, и мы натолкнулись на подход [Vue](https://vuejs.org) к поддержке своих переводов -- при помощи множества форков основного репозитория на Github. В частности, [японский перевод](https://jp.vuejs.org) использовал бота для проверки изменений в английском репозитории и создавал пулреквесты, когда изменения появлялись. Нам понравился такой подход по нескольким причинам: * Для запуска требовалось меньше кода. * Активные участники каждого репозитория получали стимул сдедить за качеством. -* Github уже привычен и понятен для сообщества и его участники мотивированы вносить вклад напрямую в организацию React. +* Сообщество уже привыкло к Github, и его участники мотивированы вносить вклад напрямую в организацию React. -Мы начали с пробного периода для трех языков: испанского, японского и с упрощенного китайского. Это позволило нам выработать методику и принять меры, чтобы с будущими переводами не возникало проблем. Я хотела, чтобы команды по переводам имели свободу выбора удобных им инструментов. Единственным требованием стал [чек-лист](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md), описывающий порядок перевода страниц. +Мы начали с пробного периода для трех языков: испанского, японского и с упрощенного китайского. Таким образом мы выработали методику и приняли меры, чтобы с будущими переводами не возникало проблем. Я хотела, чтобы команды по переводам имели свободу выбора удобных им инструментов. Единственным требованием стал [чек-лист](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md), описывающий порядок перевода страниц. -По окончании пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, и веб-сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (Переведен ли уже React?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! +После пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, и веб-сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (Переведен ли уже React?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! -Благодаря этой автоматизации, последующая поддержка проекта по большей части шла гладко. Позже мы создали [Slack-канал](https://rt-slack-invite.herokuapp.com), чтобы переводчики могли более удобно делиться информацией; также я выпустила руководство, которое закрепило [обязанности мейнтейнеров сообщества](https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md). Платформа для общения между переводчиками себя показала отлично -- к примеру, переводчики арабского, персидского и иврита смогли вместе добиться отображения [текста справа налево](https://en.wikipedia.org/wiki/Right-to-left)! +Благодаря этой автоматизации, последующая поддержка проекта по большей части шла гладко. Позже мы создали [Slack-канал](https://rt-slack-invite.herokuapp.com), чтобы переводчики могли удобно общаться между собой; также я выпустила руководство, которое закрепило [обязанности мейнтейнеров сообщества](https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md). Платформа для общения между переводчиками себя показала отлично -- к примеру, переводчики арабского, персидского и иврита смогли вместе добиться отображения [текста справа налево](https://en.wikipedia.org/wiki/Right-to-left)! ## Бот {#the-bot} -Самой сложной задачей была синхронизация изменений с английской версией сайта. Сперва мы использовали бота [che-tsumi](https://github.com/vuejs-jp/che-tsumi), которого разработала команда японского перевода Vue, но позже решили разработать собственного бота, который бы удовлятворял нашим нуждам. Если быть точной, то нас не устраивала кавалькада новых связанных между собой ишью, которые создавались после [выборочного применения](https://git-scm.com/docs/git-cherry-pick) новых коммитов ботом che-tsumi. Это стало особенно заметно после [релиза хуков](/blog/2019/02/06/react-v16.8.0.html). +Сложнее всего было синхронизировать изменения с английской версией сайта. Сперва мы использовали бота [che-tsumi](https://github.com/vuejs-jp/che-tsumi), которого разработала команда японского перевода Vue, но позже решили разработать собственного бота, который бы работал бы так, как удобно нам. Если быть точной, то нас не устраивала кавалькада новых связанных между собой ишью, которые создавались после [выборочного применения](https://git-scm.com/docs/git-cherry-pick) новых коммитов ботом che-tsumi. А после [релиза хуков](/blog/2019/02/06/react-v16.8.0.html) так вообще начался полный бардак. -В итоге мы решили, что вместо выборочного применения каждого коммита целесообразнее будет сливать все новые коммиты в один пулреквест где-то по разу в день. Конфликты сливаются как есть и перечисляются в [пулреквесте](https://github.com/reactjs/pt-BR.reactjs.org/pull/114) с чек-листом правок для мейнтейнеров. +В итоге мы решили, что вместо выборочного применения каждого коммита целесообразнее будет сливать все новые коммиты в один пулреквест где-то по разу в день. Конфликты сливаются как есть и перечисляются в [пулреквесте](https://github.com/reactjs/pt-BR.reactjs.org/pull/114) в виде чек-листа. -Создать [скрипт для синхронизации](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) было довольно просто: он скачивает переведенный репозиторий, добавляет в его удаленные репозитории оригинальный, стягивает его изменения и создает пулреквест. +Создать [скрипт для синхронизации](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) было довольно просто: скачать переведенный репозиторий, добавить в его удаленные репозитории оригинальный, стянуть его изменения и создать пулреквест. -Проблемой стал поиск места для запуска бота. Фронтенд-разработчицей я являюсь неспроста -- Heroku и подобные ему сервисы мне чужды и полностью выбивают меня из колеи. К слову, до прошлого вторника я запускала скрипт на своем персональном компьютере вручную! +Проблемой стал поиск места для запуска бота. Фронтенд-разработчицей я являюсь неспроста -- Heroku и подобные ему сервисы -- мой бич и они вводят меня в ступор. К слову, еще до прошлого вторника я запускала скрипт на своем ПК вручную! -Самая большая загвоздка заключалась в дисковом пространстве -- каждый форк репозитория занимает около 100MB и моему компьютеру необходимо несколько минут для скачивания. Форков у нас *32*, а бесплатные планы большинства платформ для деплоймента, которые я рассматривала, предоставляли лишь 512MB пространства. +Самая большая загвоздка заключалась в дисковом пространстве -- каждый форк репозитория занимает около 100MB и моему компьютеру нужно несколько минут для скачивания. Форков у нас *32*, а бесплатные планы большинства платформ для деплоймента, которые я рассматривала, предоставляли лишь 512MB пространства. -Пересчитав все множество раз в notepad'е, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, у Heroku dynos интернет-соединение будет получше моего, и они могут быстро скачать даже репозиторий React. +Пересчитав все множество раз в notepad'е, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, у Heroku dynos интернет-соединение будет получше моего, и они быстро скачивают даже репозиторий React. -Я также столкнулась и с другими небольшими проблемами. Я опробовала аддон [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), благодаря которому мне не пришлось написать ни строчки `watch`-кода, но он работал нестабильно; а еще меня [охватил экзистенциальный кризис](https://twitter.com/tesseralis/status/1097387938088796160), когда я не смогла разобраться, как отправлять коммиты из Heroku dyno. Но в конечном итоге фронтенд-разработчица в моем лице смогла завести этого бота! +Были также и другие проблемы. Я опробовала аддон [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), благодаря которому мне не пришлось написать ни строчки `watch`-кода, но он работал нестабильно; а еще меня [охватил экзистенциальный кризис](https://twitter.com/tesseralis/status/1097387938088796160), когда я не смогла разобраться, как отправлять коммиты из Heroku dyno. Но в конечном итоге фронтенд-разработчица в моем лице смогла завести этого бота! -Само собой, боту есть, куда улучшаться. В данный момент он не проверяет, есть ли открытые пулреквесты, перед тем, как отправить очередной. Также все еще трудно определить точные изменения оригинала, и есть шанс пропустить места, нуждающиеся в новом переводе. Однако я доверяю мейнтейнерам, которых мы выбрали для решения этих проблем, к тому же код бота находится в [открытом доступе](https://github.com/reactjs/reactjs.org-translation), если кто-то вдруг решится помочь мне с данными улучшениями! +Само собой, боту есть, куда улучшаться. В данный момент он не проверяет, есть ли открытые пулреквесты перед тем, как отправить очередной. Также ему все еще трудно определить точные изменения оригинала, и есть шанс пропустить места, нуждающиеся в новом переводе. Однако я доверяю мейнтейнерам, которых мы выбрали для решения этих проблем, да и код бота находится в [открытом доступе](https://github.com/reactjs/reactjs.org-translation), если кто-то вдруг решится помочь мне с данными улучшениями! ## Благодарность {#thanks} From c59cd655f0138e228f3bc361ed284f36ccf056d2 Mon Sep 17 00:00:00 2001 From: Konstantin Lyssenko Date: Sun, 6 Oct 2019 02:23:40 +0600 Subject: [PATCH 3/7] Fix spelling --- .../2019-02-23-is-react-translated-yet.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/content/blog/2019-02-23-is-react-translated-yet.md b/content/blog/2019-02-23-is-react-translated-yet.md index 8c49270b0..2764a5417 100644 --- a/content/blog/2019-02-23-is-react-translated-yet.md +++ b/content/blog/2019-02-23-is-react-translated-yet.md @@ -11,7 +11,7 @@ author: [tesseralis] * **Японский: [ja.reactjs.org](https://ja.reactjs.org)** * **Бразильский португальский: [pt-br.reactjs.org](https://pt-br.reactjs.org)** -Отдельно хотелось бы поздравить [Alejandro Ñáñez Ortiz](https://github.com/alejandronanez), [Rainer Martínez Fraga](https://github.com/carburo), [David Morales](https://github.com/dmorales), [Miguel Alejandro Bolivar Portilla](https://github.com/Darking360) и всех участвоваших в переводе испанского перевода с тем, что они стали первыми, кто *полностью* перевел основные страницы документации! +Отдельно хотелось бы поздравить [Alejandro Ñáñez Ortiz](https://github.com/alejandronanez), [Rainer Martínez Fraga](https://github.com/carburo), [David Morales](https://github.com/dmorales), [Miguel Alejandro Bolivar Portilla](https://github.com/Darking360) и всех участвоваших в переводе испанского перевода с тем, что они стали первыми, кто *полностью* перевёл основные страницы документации! ## Почему важна локализация {#why-localization-matters} @@ -27,7 +27,7 @@ author: [tesseralis] ## Предыстория {#backstory} -Здравствуйте! Я [Nat](https://twitter.com/tesseralis)! Я могу быть вам известна как [леди с полиэдрами](https://www.youtube.com/watch?v=Ew-UzGC8RqQ). Последние несколько недель я помогала команде React координировать перевод. Вот, как я это сделала. +Здравствуйте! Я [Nat](https://twitter.com/tesseralis)! Я могу быть вам известна как [та леди с полиэдрами](https://www.youtube.com/watch?v=Ew-UzGC8RqQ). Последние несколько недель я помогала команде React координировать перевод. Вот, как я это сделала. Поначалу мы использовали SaaS-платформу для обработки переводов от пользователей. Для этого был даже оформлен [пулреквест](https://github.com/reactjs/reactjs.org/pull/873), и изначально я должна была закончить эту интеграцию. Но мы боялись, что из этого ничего путного не получится, а качество переводов оставит желать лучшего. В первую очередь мы хотели, чтобы переводы не отставали от основного репозитория и не оказывались на «‎свалке». @@ -39,29 +39,29 @@ author: [tesseralis] * Активные участники каждого репозитория получали стимул сдедить за качеством. * Сообщество уже привыкло к Github, и его участники мотивированы вносить вклад напрямую в организацию React. -Мы начали с пробного периода для трех языков: испанского, японского и с упрощенного китайского. Таким образом мы выработали методику и приняли меры, чтобы с будущими переводами не возникало проблем. Я хотела, чтобы команды по переводам имели свободу выбора удобных им инструментов. Единственным требованием стал [чек-лист](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md), описывающий порядок перевода страниц. +Мы начали с пробного периода для трех языков: испанского, японского и с упрощенного китайского. Таким образом мы выработали методику и приняли меры, чтобы с будущими переводами не возникало проблем. Я хотела, чтобы команды по переводам имели свободу выбора удобных им инструментов. Единственным требованием был [чек-лист](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md), описывающий порядок перевода страниц. -После пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, и веб-сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (Переведен ли уже React?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! +После пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, и веб-сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (Переведён ли уже React?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! Благодаря этой автоматизации, последующая поддержка проекта по большей части шла гладко. Позже мы создали [Slack-канал](https://rt-slack-invite.herokuapp.com), чтобы переводчики могли удобно общаться между собой; также я выпустила руководство, которое закрепило [обязанности мейнтейнеров сообщества](https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md). Платформа для общения между переводчиками себя показала отлично -- к примеру, переводчики арабского, персидского и иврита смогли вместе добиться отображения [текста справа налево](https://en.wikipedia.org/wiki/Right-to-left)! ## Бот {#the-bot} -Сложнее всего было синхронизировать изменения с английской версией сайта. Сперва мы использовали бота [che-tsumi](https://github.com/vuejs-jp/che-tsumi), которого разработала команда японского перевода Vue, но позже решили разработать собственного бота, который бы работал бы так, как удобно нам. Если быть точной, то нас не устраивала кавалькада новых связанных между собой ишью, которые создавались после [выборочного применения](https://git-scm.com/docs/git-cherry-pick) новых коммитов ботом che-tsumi. А после [релиза хуков](/blog/2019/02/06/react-v16.8.0.html) так вообще начался полный бардак. +Сложнее всего было синхронизировать изменения с английской версией сайта. Сперва мы использовали бота [che-tsumi](https://github.com/vuejs-jp/che-tsumi), которого разработала команда японского перевода Vue, но позже решили разработать собственного бота, который бы работал бы так, как удобно нам. Если быть точной, то нас не устраивала кавалькада новых связанных между собой ишью, которые создавались после [выборочного применения](https://git-scm.com/docs/git-cherry-pick) новых коммитов ботом che-tsumi. А после [релиза хуков](/blog/2019/02/06/react-v16.8.0.html) так и вовсе начался полный бардак. В итоге мы решили, что вместо выборочного применения каждого коммита целесообразнее будет сливать все новые коммиты в один пулреквест где-то по разу в день. Конфликты сливаются как есть и перечисляются в [пулреквесте](https://github.com/reactjs/pt-BR.reactjs.org/pull/114) в виде чек-листа. -Создать [скрипт для синхронизации](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) было довольно просто: скачать переведенный репозиторий, добавить в его удаленные репозитории оригинальный, стянуть его изменения и создать пулреквест. +Создать [скрипт для синхронизации](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) было довольно просто: скачать переведённый репозиторий, добавить в его удалённые репозитории оригинальный, стянуть его изменения и создать пулреквест. -Проблемой стал поиск места для запуска бота. Фронтенд-разработчицей я являюсь неспроста -- Heroku и подобные ему сервисы -- мой бич и они вводят меня в ступор. К слову, еще до прошлого вторника я запускала скрипт на своем ПК вручную! +Проблемой стал поиск места для запуска бота. Фронтенд-разработчицей я являюсь неспроста -- Heroku и подобные ему сервисы -- мой бич и они вводят меня в ступор. К слову, ещё до прошлого вторника я запускала скрипт на своём ПК вручную! Самая большая загвоздка заключалась в дисковом пространстве -- каждый форк репозитория занимает около 100MB и моему компьютеру нужно несколько минут для скачивания. Форков у нас *32*, а бесплатные планы большинства платформ для деплоймента, которые я рассматривала, предоставляли лишь 512MB пространства. -Пересчитав все множество раз в notepad'е, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, у Heroku dynos интернет-соединение будет получше моего, и они быстро скачивают даже репозиторий React. +Пересчитав всё множество раз в notepad'е, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, у Heroku dynos интернет-соединение будет получше моего, и они быстро скачивают даже репозиторий React. -Были также и другие проблемы. Я опробовала аддон [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), благодаря которому мне не пришлось написать ни строчки `watch`-кода, но он работал нестабильно; а еще меня [охватил экзистенциальный кризис](https://twitter.com/tesseralis/status/1097387938088796160), когда я не смогла разобраться, как отправлять коммиты из Heroku dyno. Но в конечном итоге фронтенд-разработчица в моем лице смогла завести этого бота! +Были также и другие проблемы. Я опробовала аддон [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), благодаря которому мне не пришлось написать ни строчки `watch`-кода, но он работал нестабильно; а ещё меня [охватил экзистенциальный кризис](https://twitter.com/tesseralis/status/1097387938088796160), когда я не смогла разобраться, как отправлять коммиты из Heroku dyno. Но в конечном итоге фронтенд-разработчица в моём лице смогла завести этого бота! -Само собой, боту есть, куда улучшаться. В данный момент он не проверяет, есть ли открытые пулреквесты перед тем, как отправить очередной. Также ему все еще трудно определить точные изменения оригинала, и есть шанс пропустить места, нуждающиеся в новом переводе. Однако я доверяю мейнтейнерам, которых мы выбрали для решения этих проблем, да и код бота находится в [открытом доступе](https://github.com/reactjs/reactjs.org-translation), если кто-то вдруг решится помочь мне с данными улучшениями! +Само собой, боту есть, куда улучшаться. В данный момент он не проверяет, есть ли открытые пулреквесты перед тем, как отправить очередной. Также ему всё ещё трудно определить точные изменения оригинала, и есть шанс пропустить места, нуждающиеся в новом переводе. Однако я доверяю мейнтейнерам, которых мы выбрали для решения этих проблем, да и код бота находится в [открытом доступе](https://github.com/reactjs/reactjs.org-translation), если кто-то вдруг решится помочь мне с данными улучшениями! ## Благодарность {#thanks} From 509c3a25b2842ae4197d619eb8d20f0a5dfb96b6 Mon Sep 17 00:00:00 2001 From: Konstantin Lyssenko Date: Sun, 6 Oct 2019 02:44:35 +0600 Subject: [PATCH 4/7] Update blog post title --- content/blog/2019-02-23-is-react-translated-yet.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/blog/2019-02-23-is-react-translated-yet.md b/content/blog/2019-02-23-is-react-translated-yet.md index 2764a5417..812c2b5c8 100644 --- a/content/blog/2019-02-23-is-react-translated-yet.md +++ b/content/blog/2019-02-23-is-react-translated-yet.md @@ -1,5 +1,5 @@ --- -title: "Переведен ли уже React? ¡Sí! Sim! はい!" +title: "А React уже переведён? ¡Sí! Sim! はい!" author: [tesseralis] --- @@ -41,7 +41,7 @@ author: [tesseralis] Мы начали с пробного периода для трех языков: испанского, японского и с упрощенного китайского. Таким образом мы выработали методику и приняли меры, чтобы с будущими переводами не возникало проблем. Я хотела, чтобы команды по переводам имели свободу выбора удобных им инструментов. Единственным требованием был [чек-лист](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md), описывающий порядок перевода страниц. -После пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, и веб-сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (Переведён ли уже React?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! +После пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, и веб-сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (А React уже переведён?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! Благодаря этой автоматизации, последующая поддержка проекта по большей части шла гладко. Позже мы создали [Slack-канал](https://rt-slack-invite.herokuapp.com), чтобы переводчики могли удобно общаться между собой; также я выпустила руководство, которое закрепило [обязанности мейнтейнеров сообщества](https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md). Платформа для общения между переводчиками себя показала отлично -- к примеру, переводчики арабского, персидского и иврита смогли вместе добиться отображения [текста справа налево](https://en.wikipedia.org/wiki/Right-to-left)! From 2814c6f7dd64b802fcd41eaa3a654aee748de235 Mon Sep 17 00:00:00 2001 From: Konstantin Lyssenko Date: Sun, 6 Oct 2019 10:55:46 +0600 Subject: [PATCH 5/7] Apply suggestions from code review * Fix typos and stylistics Co-Authored-By: Alexey Pyltsyn --- .../2019-02-23-is-react-translated-yet.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/content/blog/2019-02-23-is-react-translated-yet.md b/content/blog/2019-02-23-is-react-translated-yet.md index 812c2b5c8..463840b82 100644 --- a/content/blog/2019-02-23-is-react-translated-yet.md +++ b/content/blog/2019-02-23-is-react-translated-yet.md @@ -3,21 +3,21 @@ title: "А React уже переведён? ¡Sí! Sim! はい!" author: [tesseralis] --- -Мы рады объявить о работе над поддержкой официальных переводов документации React на другие языки. Благораря усердным усилиям сообщества React по всему миру, React переводится на *более, чем 30 языков*! Их можно найти на новой странице -- [переводы](/languages). +Мы рады объявить о работе над поддержкой официальных переводов документации React на другие языки. Благодаря усердным усилиям сообщества React по всему миру, React переводится на *более, чем 30 языков*! Их можно найти на новой странице -- [переводы](/languages). Также, переводы для следующих трех языков уже полностью завершены! * **Испанский: [es.reactjs.org](https://es.reactjs.org)** * **Японский: [ja.reactjs.org](https://ja.reactjs.org)** -* **Бразильский португальский: [pt-br.reactjs.org](https://pt-br.reactjs.org)** +* **Бразильский вариант португальского языка: [pt-br.reactjs.org](https://pt-br.reactjs.org)** -Отдельно хотелось бы поздравить [Alejandro Ñáñez Ortiz](https://github.com/alejandronanez), [Rainer Martínez Fraga](https://github.com/carburo), [David Morales](https://github.com/dmorales), [Miguel Alejandro Bolivar Portilla](https://github.com/Darking360) и всех участвоваших в переводе испанского перевода с тем, что они стали первыми, кто *полностью* перевёл основные страницы документации! +Отдельно хотелось бы поздравить [Alejandro Ñáñez Ortiz](https://github.com/alejandronanez), [Rainer Martínez Fraga](https://github.com/carburo), [David Morales](https://github.com/dmorales), [Miguel Alejandro Bolivar Portilla](https://github.com/Darking360) и всех участвовавших в переводе испанского перевода с тем, что они стали первыми, кто *полностью* перевёл основные страницы документации! ## Почему важна локализация {#why-localization-matters} По React уже проводится множество конференций и митапов по всему миру, но далеко не для всех программистов английский язык является основным. Нам бы очень хотелось поддержать местные сообщества, сделав нашу документацию доступной на наиболее популярных языках. -Участники React-сообщества уже написали неофициальные переводы на [китайском](https://github.com/discountry/react), [арабском](https://wiki.hsoub.com/React), and [корейском](https://github.com/reactjs/ko.reactjs.org/issues/4); мы надеемся, что официальный канал для этих переводов упростит их поиск, и люди, не говорящие на английском языке, не останутся за бортом. +Участники React-сообщества уже написали неофициальные переводы на [китайском](https://github.com/discountry/react), [арабском](https://wiki.hsoub.com/React) и [корейском](https://github.com/reactjs/ko.reactjs.org/issues/4) языках; мы надеемся, что официальный канал этих переводов упростит их поиск, и люди, не говорящие на английском языке, не останутся за бортом. ## Помощь проекту {#contributing} @@ -27,21 +27,21 @@ author: [tesseralis] ## Предыстория {#backstory} -Здравствуйте! Я [Nat](https://twitter.com/tesseralis)! Я могу быть вам известна как [та леди с полиэдрами](https://www.youtube.com/watch?v=Ew-UzGC8RqQ). Последние несколько недель я помогала команде React координировать перевод. Вот, как я это сделала. +Здравствуйте! Я [Nat](https://twitter.com/tesseralis)! Я могу быть вам известна как [та леди с полиэдрами](https://www.youtube.com/watch?v=Ew-UzGC8RqQ). Последние несколько недель я помогала команде React координировать процесс переводов. Вот, как я это сделала. Поначалу мы использовали SaaS-платформу для обработки переводов от пользователей. Для этого был даже оформлен [пулреквест](https://github.com/reactjs/reactjs.org/pull/873), и изначально я должна была закончить эту интеграцию. Но мы боялись, что из этого ничего путного не получится, а качество переводов оставит желать лучшего. В первую очередь мы хотели, чтобы переводы не отставали от основного репозитория и не оказывались на «‎свалке». -[Dan](https://twitter.com/dan_abramov) смотивировал меня найти альтернативное решение, и мы натолкнулись на подход [Vue](https://vuejs.org) к поддержке своих переводов -- при помощи множества форков основного репозитория на Github. В частности, [японский перевод](https://jp.vuejs.org) использовал бота для проверки изменений в английском репозитории и создавал пулреквесты, когда изменения появлялись. +[Дэн](https://twitter.com/dan_abramov) смотивировал меня найти альтернативное решение, и мы натолкнулись на подход [Vue](https://vuejs.org) к поддержке своих переводов -- при помощи множества форков основного репозитория на Github. В частности, [японский перевод](https://jp.vuejs.org) использовал бота для проверки изменений в английском репозитории и создавал пулреквесты, когда изменения появлялись. Нам понравился такой подход по нескольким причинам: * Для запуска требовалось меньше кода. -* Активные участники каждого репозитория получали стимул сдедить за качеством. -* Сообщество уже привыкло к Github, и его участники мотивированы вносить вклад напрямую в организацию React. +* Активные участники каждого репозитория получали стимул следить за качеством. +* Сообщество уже привыкло к GitHub, и его участники мотивированы вносить вклад напрямую в организацию React. Мы начали с пробного периода для трех языков: испанского, японского и с упрощенного китайского. Таким образом мы выработали методику и приняли меры, чтобы с будущими переводами не возникало проблем. Я хотела, чтобы команды по переводам имели свободу выбора удобных им инструментов. Единственным требованием был [чек-лист](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md), описывающий порядок перевода страниц. -После пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, и веб-сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (А React уже переведён?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! +После пробного периода мы были готовы принимать другие переводы. Я создала [скрипт](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js), чтобы автоматизировать создание репозиториев для новых языков, а также сайт [Is React Translated Yet?](https://isreacttranslatedyet.com) (А React уже переведён?), чтобы отслеживать прогресс тех или иных переводов. Уже в первый день мы начали целых *10* переводов! Благодаря этой автоматизации, последующая поддержка проекта по большей части шла гладко. Позже мы создали [Slack-канал](https://rt-slack-invite.herokuapp.com), чтобы переводчики могли удобно общаться между собой; также я выпустила руководство, которое закрепило [обязанности мейнтейнеров сообщества](https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md). Платформа для общения между переводчиками себя показала отлично -- к примеру, переводчики арабского, персидского и иврита смогли вместе добиться отображения [текста справа налево](https://en.wikipedia.org/wiki/Right-to-left)! @@ -51,13 +51,13 @@ author: [tesseralis] В итоге мы решили, что вместо выборочного применения каждого коммита целесообразнее будет сливать все новые коммиты в один пулреквест где-то по разу в день. Конфликты сливаются как есть и перечисляются в [пулреквесте](https://github.com/reactjs/pt-BR.reactjs.org/pull/114) в виде чек-листа. -Создать [скрипт для синхронизации](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) было довольно просто: скачать переведённый репозиторий, добавить в его удалённые репозитории оригинальный, стянуть его изменения и создать пулреквест. +Создать [скрипт синхронизации](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) было довольно просто: скачать переведённый репозиторий, добавить в его удалённые репозитории оригинальный, стянуть его изменения и создать пулреквест. Проблемой стал поиск места для запуска бота. Фронтенд-разработчицей я являюсь неспроста -- Heroku и подобные ему сервисы -- мой бич и они вводят меня в ступор. К слову, ещё до прошлого вторника я запускала скрипт на своём ПК вручную! -Самая большая загвоздка заключалась в дисковом пространстве -- каждый форк репозитория занимает около 100MB и моему компьютеру нужно несколько минут для скачивания. Форков у нас *32*, а бесплатные планы большинства платформ для деплоймента, которые я рассматривала, предоставляли лишь 512MB пространства. +Самая большая загвоздка заключалась в дисковом пространстве -- каждый форк репозитория занимает около 100MB и моему компьютеру нужно несколько минут для скачивания. Форков у нас *32*, а бесплатные планы большинства платформ для развёртывания, которые я рассматривала, предоставляли лишь 512MB пространства. -Пересчитав всё множество раз в notepad'е, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, у Heroku dynos интернет-соединение будет получше моего, и они быстро скачивают даже репозиторий React. +Пересчитав всё множество раз в блокноте, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, у Heroku dynos интернет-соединение будет получше моего, и они быстро скачивают даже репозиторий React. Были также и другие проблемы. Я опробовала аддон [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), благодаря которому мне не пришлось написать ни строчки `watch`-кода, но он работал нестабильно; а ещё меня [охватил экзистенциальный кризис](https://twitter.com/tesseralis/status/1097387938088796160), когда я не смогла разобраться, как отправлять коммиты из Heroku dyno. Но в конечном итоге фронтенд-разработчица в моём лице смогла завести этого бота! @@ -73,4 +73,4 @@ author: [tesseralis] * [Eric Nakagawa](https://github.com/ericnakagawa) -- за организацию нашего предыдущего процесса перевода. * [Brian Vaughn](https://github.com/bvaughn) -- за настройку [страницы переводов](/languages) и за администрирование всех поддоменов. -И напоследок, огромное спасибо [Dan Abramov](https://twitter.com/dan_abramov) за то, что дал мне эту возможность, и, конечно же, за его замечательные наставления. +И напоследок, огромное спасибо [Дэну Абрамову](https://twitter.com/dan_abramov) за то, что дал мне эту возможность, и, конечно же, за его замечательные наставления. From a3621784f0f665469e174a41c8d6b07e6975ee0b Mon Sep 17 00:00:00 2001 From: Konstantin Lyssenko Date: Sun, 6 Oct 2019 10:56:57 +0600 Subject: [PATCH 6/7] Apply suggestions from code review (2) Co-Authored-By: Alexey Pyltsyn --- content/blog/2019-02-23-is-react-translated-yet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/2019-02-23-is-react-translated-yet.md b/content/blog/2019-02-23-is-react-translated-yet.md index 463840b82..e1d365f3a 100644 --- a/content/blog/2019-02-23-is-react-translated-yet.md +++ b/content/blog/2019-02-23-is-react-translated-yet.md @@ -23,7 +23,7 @@ author: [tesseralis] Если вам хочется помочь с переводом, посетите страницу [переводов](/languages) и нажмите на ссылку «‎Contribute»‎ у вашего языка. -Не можете найти свой язык? Если хотите мейнтейнить форк перевода на ваш язык, следуйте инструкциям в [репозитории переводов](https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation)! +Не можете найти свой язык? Если хотите поддерживать форк перевода на ваш язык, тогда следуйте инструкциям в [репозитории переводов](https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation)! ## Предыстория {#backstory} From dfefa9719f61525e7d99142c537f62d631539abc Mon Sep 17 00:00:00 2001 From: Konstantin Lyssenko Date: Sun, 6 Oct 2019 19:44:58 +0600 Subject: [PATCH 7/7] Apply suggestions from code review Co-Authored-By: Anton Ahatov --- content/blog/2019-02-23-is-react-translated-yet.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/blog/2019-02-23-is-react-translated-yet.md b/content/blog/2019-02-23-is-react-translated-yet.md index e1d365f3a..69365d966 100644 --- a/content/blog/2019-02-23-is-react-translated-yet.md +++ b/content/blog/2019-02-23-is-react-translated-yet.md @@ -5,7 +5,7 @@ author: [tesseralis] Мы рады объявить о работе над поддержкой официальных переводов документации React на другие языки. Благодаря усердным усилиям сообщества React по всему миру, React переводится на *более, чем 30 языков*! Их можно найти на новой странице -- [переводы](/languages). -Также, переводы для следующих трех языков уже полностью завершены! +Также, переводы для следующих трех языков уже полностью завершены! 🎉 * **Испанский: [es.reactjs.org](https://es.reactjs.org)** * **Японский: [ja.reactjs.org](https://ja.reactjs.org)** @@ -47,21 +47,21 @@ author: [tesseralis] ## Бот {#the-bot} -Сложнее всего было синхронизировать изменения с английской версией сайта. Сперва мы использовали бота [che-tsumi](https://github.com/vuejs-jp/che-tsumi), которого разработала команда японского перевода Vue, но позже решили разработать собственного бота, который бы работал бы так, как удобно нам. Если быть точной, то нас не устраивала кавалькада новых связанных между собой ишью, которые создавались после [выборочного применения](https://git-scm.com/docs/git-cherry-pick) новых коммитов ботом che-tsumi. А после [релиза хуков](/blog/2019/02/06/react-v16.8.0.html) так и вовсе начался полный бардак. +Сложнее всего было синхронизировать изменения с английской версией сайта. Сперва мы использовали бота [che-tsumi](https://github.com/vuejs-jp/che-tsumi), которого разработала команда японского перевода Vue, но позже решили разработать собственного бота, который бы работал бы так, как удобно нам. Если быть точной, то нас не устраивали связанные между собой ишью, которые создавались после [выборочного применения](https://git-scm.com/docs/git-cherry-pick) новых коммитов ботом che-tsumi. А после [релиза хуков](/blog/2019/02/06/react-v16.8.0.html) так и вовсе начался полный бардак. В итоге мы решили, что вместо выборочного применения каждого коммита целесообразнее будет сливать все новые коммиты в один пулреквест где-то по разу в день. Конфликты сливаются как есть и перечисляются в [пулреквесте](https://github.com/reactjs/pt-BR.reactjs.org/pull/114) в виде чек-листа. Создать [скрипт синхронизации](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) было довольно просто: скачать переведённый репозиторий, добавить в его удалённые репозитории оригинальный, стянуть его изменения и создать пулреквест. -Проблемой стал поиск места для запуска бота. Фронтенд-разработчицей я являюсь неспроста -- Heroku и подобные ему сервисы -- мой бич и они вводят меня в ступор. К слову, ещё до прошлого вторника я запускала скрипт на своём ПК вручную! +Проблемой стал поиск места для запуска бота. Я фронтенд-разработчица и, возможно, поэтому такие сервисы как Heroku мне чужды. К слову, ещё до прошлого вторника я запускала скрипт на своём ПК вручную! Самая большая загвоздка заключалась в дисковом пространстве -- каждый форк репозитория занимает около 100MB и моему компьютеру нужно несколько минут для скачивания. Форков у нас *32*, а бесплатные планы большинства платформ для развёртывания, которые я рассматривала, предоставляли лишь 512MB пространства. -Пересчитав всё множество раз в блокноте, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, у Heroku dynos интернет-соединение будет получше моего, и они быстро скачивают даже репозиторий React. +Множество раз пересчитав всё в блокноте, я пришла к решению: удалять каждый репозиторий после выполнения скрипта и ограничивать количество одновременно запущенных скриптов до того, которое могло поддержать хранилище. К счастью, dynos от Heroku имеют интернет-соединение получше моего, и они быстро скачивают даже репозиторий React. -Были также и другие проблемы. Я опробовала аддон [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), благодаря которому мне не пришлось написать ни строчки `watch`-кода, но он работал нестабильно; а ещё меня [охватил экзистенциальный кризис](https://twitter.com/tesseralis/status/1097387938088796160), когда я не смогла разобраться, как отправлять коммиты из Heroku dyno. Но в конечном итоге фронтенд-разработчица в моём лице смогла завести этого бота! +Были и другие мелкие проблемы. Я попробовала аддон [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), благодаря которому мне не пришлось писать `watch`-код, однако он работал нестабильно. Меня [охватил экзистенциальный кризис в твиттере](https://twitter.com/tesseralis/status/1097387938088796160), когда я не смогла разобраться, как отправлять коммиты из Heroku dyno. Но, в конце концов, моя внутренняя фронтенд-разработчица смогла заставить бот работать! -Само собой, боту есть, куда улучшаться. В данный момент он не проверяет, есть ли открытые пулреквесты перед тем, как отправить очередной. Также ему всё ещё трудно определить точные изменения оригинала, и есть шанс пропустить места, нуждающиеся в новом переводе. Однако я доверяю мейнтейнерам, которых мы выбрали для решения этих проблем, да и код бота находится в [открытом доступе](https://github.com/reactjs/reactjs.org-translation), если кто-то вдруг решится помочь мне с данными улучшениями! +Само собой, боту есть куда улучшаться. В данный момент он не проверяет, есть ли открытые пулреквесты перед тем, как отправить очередной. Также ему всё ещё трудно определить точные изменения оригинала, и есть шанс пропустить места, нуждающиеся в переводе. Однако я доверяю мейнтейнерам, которых мы выбрали для решения этих проблем, да и код бота находится в [открытом доступе](https://github.com/reactjs/reactjs.org-translation), если кто-то вдруг решится помочь мне с данными улучшениями! ## Благодарность {#thanks}