-
Notifications
You must be signed in to change notification settings - Fork 316
Initial work on "Is React Translated Yet" blog post translation #155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
glaucia86
merged 5 commits into
reactjs:master
from
Luanf:is-react-translated-blog-PT-BR
Mar 17, 2019
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
333220d
Initial work on "Is React Translated Yet" blog post translation
Luanf b26b0b5
Finish translation of is-react-translated-yet blog post
Luanf 48da43d
Merge branch 'master' into is-react-translated-blog-PT-BR
Luanf 9b15469
Apply suggestions from code review
Luanf b9d797a
Merge branch 'master' into is-react-translated-blog-PT-BR
Luanf File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,76 +1,76 @@ | ||
--- | ||
title: "Is React Translated Yet? ¡Sí! Sim! はい!" | ||
title: "O React já esta traduzido? ¡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. | ||
Temos o prazer de anunciar o esforço continuo para manter traduções oficiais do website de documentação do React em diferentes idiomas. Graças ao esforço dedicado dos membros da comunidade do React de todo o mundo, o React agora está sendo traduzido em *mais de 30* idiomas! Você pode acha-los na nova pagina de [Idiomas](/languages). | ||
|
||
In addition, the following three languages have completed translating most of the React Docs! 🎉 | ||
Além disso, as três linguagens a seguir concluíram a tradução da maioria dos documentos do React! 🎉 | ||
|
||
* **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)** | ||
* **Espanhol: [es.reactjs.org](https://es.reactjs.org)** | ||
* **Japonês: [ja.reactjs.org](https://ja.reactjs.org)** | ||
* **Português do Brasil: [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! | ||
Parabéns especiais para [Alejandro Ñáñez Ortiz](https://github.com/alejandronanez), [Rainer Martínez Fraga](https://github.com/carburo), [David Morales](https://github.com/dmorales), [Miguel Alejandro Bolívar Portilla](https://github.com/Darking360), e todos os colaboradores da tradução em espanhol por serem os primeiros a *completamente* traduzirem as páginas principais da documentação! | ||
|
||
## Why Localization Matters {#why-localization-matters} | ||
## Por Que a Localização é Importante? {#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. | ||
O React já tem muitos eventos e conferências no mundo todo, mas muitos desenvolvedores não tem o inglês como idioma principal. Gostaríamos de oferecer suporte às comunidades locais que usam o React, disponibilizando nossa documentação nos idiomas mais populares. | ||
|
||
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. | ||
No passado, membros da comunidade do React criaram traduções não oficiais para o [chinês](https://github.com/discountry/react), [árabe](https://wiki.hsoub.com/React) e [coreano](https://github.com/reactjs/ko.reactjs.org/issues/4); Ao criar um canal oficial para essas traduções, esperamos torna-las mais fáceis de se encontrar e ajudar a garantir que os usuários do React que não falem inglês não sejam deixados para trás. | ||
|
||
## Contributing {#contributing} | ||
## Contribuindo {#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. | ||
Se você quiser ajudar em uma tradução atual, confira a página [Idiomas](/languages) e clique no link "Contribuir" para o seu idioma. | ||
|
||
Can't find your language? If you'd like to maintain your langauge's translation fork, follow the instructions in the [translation repo](https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation)! | ||
Não consegue encontrar o seu idioma? Se você deseja manter o repositório de tradução do seu idioma, siga as instruções no [repositório de tradução](https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation)! | ||
|
||
## Backstory {#backstory} | ||
## Contexto {#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. | ||
Olá a todos! Me chamo [Nat](https://twitter.com/tesseralis)! Talvez você me conheça como a [moça dos poliedros](https://www.youtube.com/watch?v=Ew-UzGC8RqQ). Nas últimas semanas, eu ajudei a equipe do React a coordenar os esforços da tradução. Eis como eu fiz isso. | ||
|
||
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". | ||
Nossa abordagem original para as traduções foi usar uma plataforma SaaS que permite usuários a submeter traduções. Já havia um [pull request](https://github.com/reactjs/reactjs.org/pull/873) para integrá-lo e minha responsabilidade original era terminar essa integração. No entanto, tivemos preocupações sobre a viabilidade dessa integração e a qualidade das traduções na plataforma no momento. Nossa principal preocupação era garantir que as traduções continuassem atualizadas com o repositório principal e não se tornassem obsoletas. | ||
|
||
[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) me encorajou a procurar soluções alternativas, e nós nos deparamos com a forma como a [Vue](https://vuejs.org) manteve suas traduções - através de diferentes forks dos principais repositórios no GitHub. Em particular, a [tradução em japonês](https://jp.vuejs.org) usou um bot para verificar periodicamente as alterações no repositório em inglês e enviar pull requests sempre que existir uma mudança. | ||
|
||
This approach appealed to us for several reasons: | ||
Essa abordagem nos atraiu por vários motivos: | ||
|
||
* 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. | ||
* Menos código de integração. | ||
* Encorajou mantenedores ativos em cada repositório para garantir qualidade. | ||
* Os colaboradores já tem entendimento do GitHub como plataforma e ficam motivados para contribuir diretamente a organização do React. | ||
|
||
We started of 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. | ||
Começamos com um período inicial de teste em três idiomas: espanhol, japonês e chinês simplificado. Isso nos permitiu resolver quaisquer problemas no processo e garantir que futuras traduções tenham ótimas chances de sucesso. Eu queria dar a liberdade para que as equipes de tradução pudessem escolher qualquer ferramenta com a qual se sentissem à vontade. O único requisito é uma [checklist](https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md) que descreve a ordem de importância para a tradução de páginas. | ||
|
||
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! | ||
Após o período de testes, estávamos prontos para aceitar mais idiomas. Eu criei [um script](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js) para automatizar a criação de novos repositórios de idiomas, e um site, [O React já esta traduzido?](https://isreacttranslatedyet.com), para acompanhar o andamento das diferentes traduções. Começamos *10* novas traduções apenas no nosso primeiro dia! | ||
|
||
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! | ||
Por causa da automação, o restante da manutenção foi em geral tranquila. Nós finalmente criamos um [canal no Slack](https://rt-slack-invite.herokuapp.com) para facilitar o compartilhamento de informações pelos tradutores, e eu publiquei um guia para solidificar as [responsabilidades dos mantenedores](https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md). Permitir que os tradutores conversassem entre si foi um grande benefício - por exemplo, as traduções em árabe, persa e hebraico eram capazes de se comunicar entre si para obter o [texto da direita para a esquerda](https://en.wikipedia.org/wiki/Right-to-left) funcionando! | ||
|
||
## The Bot {#the-bot} | ||
## O Bot {#the-bot} | ||
Luanf marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
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). | ||
A parte mais desafiadora foi fazer com que o bot sincronizasse as alterações da versão em inglês do site. Inicialmente, estávamos usando o bot [che-tsumi](https://github.com/vuejs-jp/che-tsumi) criado pela equipe de tradução da Vue em japonês, mas logo decidimos construir nosso próprio bot para atender às nossas necessidades. Em particular, o bot che-tsumi trabalha com [cherry picking](https://git-scm.com/docs/git-cherry-pick) dos novos commits. Isso acabou causando uma confusão de novos problemas que estavam interconectados, especialmente quando [os Hooks foram lançados](/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. | ||
No final, decidimos que em vez de selecionar cada commit com cherry pick, fazia mais sentido juntar todos os novos commits e criar um novo pull request em torno de uma vez por dia. Conflitos são deixados como estão e listados no [pull request](https://github.com/reactjs/pt-BR.reactjs.org/pull/114), deixando uma lista de pontos para os mantenedores corrigirem. | ||
|
||
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. | ||
Criar o [script de sincronização](https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js) foi fácil: ele faz o download do repositório traduzido, adiciona o original como remoto, puxa dele, mescla os conflitos e cria um pull request. | ||
|
||
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! | ||
O problema foi encontrar um lugar para o bot rodar. Eu sou uma desenvolvedora frontend por uma razão - Heroku e seus amigos são estranhos para mim e infinitamente frustrantes. Na verdade, até esta terça-feira passada, eu estava executando o script manualmente na minha máquina local! | ||
|
||
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. | ||
O maior desafio foi o espaço. Cada fork do repositório tem cerca de 100MB - o que leva alguns minutos para clonar na minha máquina local. Temos *32* forks, e os níveis gratuitos da maioria das plataformas de deployment que eu verifiquei limitam você a 512 MB de armazenamento. | ||
|
||
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. | ||
Após vários cálculos no papel, encontrei uma solução: excluir cada repo depois de terminar o script e limitar a simultaneidade dos scripts de sincronização que são executados de uma vez para estarem dentro dos requisitos de armazenamento. Felizmente, os dynos no Heroku têm uma conexão à Internet muito mais rápida e são capazes de clonar até mesmo o repositório do React rapidamente. | ||
|
||
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! | ||
Houve outros problemas menores que eu encontrei. Eu tentei usar o [Heroku Scheduler](https://elements.heroku.com/addons/scheduler) para não ter que escrever nenhum código que fizesse `watch` (vigiar o repositório), mas ele acabou rodando de forma muito inconsistente, e eu [tive um colapso existencial no Twitter](https://twitter.com/tesseralis/status/1097387938088796160) quando não conseguia descobrir como enviar commits do dyno no Heroku. Mas no final, essa engenheira de frontend conseguiu fazer o bot funcionar! | ||
|
||
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! | ||
Há, como sempre, melhorias que quero fazer no bot. No momento, ele não verifica se há um pedido de pull request pendente antes de fazer outro. Ainda é difícil dizer a mudança exata que aconteceu na fonte original, e é possível não perceber uma mudança de tradução necessária. Mas eu confio nos mantenedores que escolhemos para resolver esses problemas, e o bot é [open source](https://github.com/reactjs/reactjs.org-translation) se alguém quiser me ajudar a fazer essas melhorias! | ||
|
||
## Thanks {#thanks} | ||
## Agradecimentos {#thanks} | ||
|
||
Finally, I would like to extend my gratitude to the following people and groups: | ||
Por fim, gostaria de estender minha gratidão às seguintes pessoas e grupos: | ||
|
||
* 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. | ||
* Todos os mantenedores e contribuidores que estão ajudando a traduzir o React para mais de trinta idiomas. | ||
* O [Grupo de Usuários do Vue.js Japão](https://github.com/vuejs-jp) por ter a ideia de ter traduções gerenciadas por um bot e, especialmente, a [Hanatani Takuma](https://github.com/potato4d) por nos ajudar a entender sua abordagem e ajudar a manter a tradução em japonês. | ||
* [Soichiro Miki](https://github.com/smikitky) por muitas [contribuições](https://github.com/reactjs/reactjs.org/pull/1636) e comentários heio de idéias sobre o processo geral de tradução, bem como por manter a tradução japonesa. | ||
* [Eric Nakagawa](https://github.com/ericnakagawa) por gerenciar nosso processo de tradução anterior. | ||
* [Brian Vaughn](https://github.com/bvaughn) por configurar a [página de idiomas](/languages) e gerenciar todos os subdomínios. | ||
|
||
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. | ||
E finalmente, obrigada a [Dan Abramov](https://twitter.com/dan_abramov) por me dar esta oportunidade e ser um grande mentor ao longo do caminho. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
E pensar que quase fomos nos hahaha
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pois é :( haha mas que bom que tem competição