{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2019/02/23/is-react-translated-yet.html","result":{"data":{"markdownRemark":{"html":"<p>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 <em>mais de 30</em> idiomas! Você pode acha-los na nova pagina de <a href=\"/languages\">Idiomas</a>.</p>\n<p>Além disso, as três linguagens a seguir concluíram a tradução da maioria dos documentos do React! 🎉</p>\n<ul>\n<li><strong>Espanhol: <a href=\"https://es.reactjs.org\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">es.reactjs.org</a></strong></li>\n<li><strong>Japonês: <a href=\"https://ja.reactjs.org\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ja.reactjs.org</a></strong></li>\n<li><strong>Português do Brasil: <a href=\"https://pt-br.reactjs.org\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">pt-br.reactjs.org</a></strong></li>\n</ul>\n<p>Parabéns especiais para <a href=\"https://github.com/alejandronanez\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Alejandro Ñáñez Ortiz</a>, <a href=\"https://github.com/carburo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Rainer Martínez Fraga</a>, <a href=\"https://github.com/dmorales\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">David Morales</a>, <a href=\"https://github.com/Darking360\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Miguel Alejandro Bolívar Portilla</a>, e todos os colaboradores da tradução em espanhol por serem os primeiros a <em>completamente</em> traduzirem as páginas principais da documentação!</p>\n<h2 id=\"why-localization-matters\"><a href=\"#why-localization-matters\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Por Que a Localização é Importante? </h2>\n<p>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.</p>\n<p>No passado, membros da comunidade do React criaram traduções não oficiais para o <a href=\"https://github.com/discountry/react\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">chinês</a>, <a href=\"https://wiki.hsoub.com/React\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">árabe</a> e <a href=\"https://github.com/reactjs/ko.reactjs.org/issues/4\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">coreano</a>; 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.</p>\n<h2 id=\"contributing\"><a href=\"#contributing\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Contribuindo </h2>\n<p>Se você quiser ajudar em uma tradução atual, confira a página <a href=\"/languages\">Idiomas</a> e clique no link “Contribuir” para o seu idioma.</p>\n<p>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 <a href=\"https://github.com/reactjs/reactjs.org-translation#starting-a-new-translation\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">repositório de tradução</a>!</p>\n<h2 id=\"backstory\"><a href=\"#backstory\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Contexto </h2>\n<p>Olá a todos! Me chamo <a href=\"https://twitter.com/tesseralis\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Nat</a>! Talvez você me conheça como a <a href=\"https://www.youtube.com/watch?v=Ew-UzGC8RqQ\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">moça dos poliedros</a>. Nas últimas semanas, eu ajudei a equipe do React a coordenar os esforços da tradução. Eis como eu fiz isso.</p>\n<p>Nossa abordagem original para as traduções foi usar uma plataforma SaaS que permite usuários a submeter traduções. Já havia um <a href=\"https://github.com/reactjs/reactjs.org/pull/873\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">pull request</a> 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.</p>\n<p><a href=\"https://twitter.com/dan_abramov\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Dan</a> me encorajou a procurar soluções alternativas, e nós nos deparamos com a forma como a <a href=\"https://vuejs.org\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Vue</a> manteve suas traduções - através de diferentes forks dos principais repositórios no GitHub. Em particular, a <a href=\"https://jp.vuejs.org\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">tradução em japonês</a> 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.</p>\n<p>Essa abordagem nos atraiu por vários motivos:</p>\n<ul>\n<li>Menos código de integração.</li>\n<li>Encorajou mantenedores ativos em cada repositório para garantir qualidade.</li>\n<li>Os colaboradores já tem entendimento do GitHub como plataforma e ficam motivados para contribuir diretamente a organização do React.</li>\n</ul>\n<p>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 <a href=\"https://github.com/reactjs/reactjs.org-translation/blob/master/PROGRESS.template.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">checklist</a> que descreve a ordem de importância para a tradução de páginas.</p>\n<p>Após o período de testes, estávamos prontos para aceitar mais idiomas. Eu criei <a href=\"https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/create.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">um script</a> para automatizar a criação de novos repositórios de idiomas, e um site, <a href=\"https://isreacttranslatedyet.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">O React já esta traduzido?</a>, para acompanhar o andamento das diferentes traduções. Começamos <em>10</em> novas traduções apenas no nosso primeiro dia!</p>\n<p>Por causa da automação, o restante da manutenção foi em geral tranquila. Nós finalmente criamos um <a href=\"https://rt-slack-invite.herokuapp.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">canal no Slack</a> para facilitar o compartilhamento de informações pelos tradutores, e eu publiquei um guia para solidificar as <a href=\"https://github.com/reactjs/reactjs.org-translation/blob/master/maintainer-guide.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">responsabilidades dos mantenedores</a>. 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 <a href=\"https://en.wikipedia.org/wiki/Right-to-left\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">texto da direita para a esquerda</a> funcionando!</p>\n<h2 id=\"the-bot\"><a href=\"#the-bot\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>O Bot </h2>\n<p>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 <a href=\"https://github.com/vuejs-jp/che-tsumi\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">che-tsumi</a> 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 <a href=\"https://git-scm.com/docs/git-cherry-pick\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">cherry picking</a> dos novos commits. Isso acabou causando uma confusão de novos problemas que estavam interconectados, especialmente quando <a href=\"/blog/2019/02/06/react-v16.8.0.html\">os Hooks foram lançados</a>.</p>\n<p>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 <a href=\"https://github.com/reactjs/pt-BR.reactjs.org/pull/114\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">pull request</a>, deixando uma lista de pontos para os mantenedores corrigirem.</p>\n<p>Criar o <a href=\"https://github.com/reactjs/reactjs.org-translation/blob/master/scripts/sync.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">script de sincronização</a> 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.</p>\n<p>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!</p>\n<p>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 <em>32</em> forks, e os níveis gratuitos da maioria das plataformas de deployment que eu verifiquei limitam você a 512 MB de armazenamento.</p>\n<p>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.</p>\n<p>Houve outros problemas menores que eu encontrei. Eu tentei usar o <a href=\"https://elements.heroku.com/addons/scheduler\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Heroku Scheduler</a> para não ter que escrever nenhum código que fizesse <code class=\"gatsby-code-text\">watch</code> (vigiar o repositório), mas ele acabou rodando de forma muito inconsistente, e eu <a href=\"https://twitter.com/tesseralis/status/1097387938088796160\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">tive um colapso existencial no Twitter</a> quando não conseguia descobrir como enviar commits do dyno no Heroku. Mas no final, essa engenheira de frontend conseguiu fazer o bot funcionar!</p>\n<p>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 é <a href=\"https://github.com/reactjs/reactjs.org-translation\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">open source</a> se alguém quiser me ajudar a fazer essas melhorias!</p>\n<h2 id=\"thanks\"><a href=\"#thanks\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Agradecimentos </h2>\n<p>Por fim, gostaria de estender minha gratidão às seguintes pessoas e grupos:</p>\n<ul>\n<li>Todos os mantenedores e contribuidores que estão ajudando a traduzir o React para mais de trinta idiomas.</li>\n<li>O <a href=\"https://github.com/vuejs-jp\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Grupo de Usuários do Vue.js Japão</a> por ter a ideia de ter traduções gerenciadas por um bot e, especialmente, a <a href=\"https://github.com/potato4d\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Hanatani Takuma</a> por nos ajudar a entender sua abordagem e ajudar a manter a tradução em japonês.</li>\n<li><a href=\"https://github.com/smikitky\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Soichiro Miki</a> por muitas <a href=\"https://github.com/reactjs/reactjs.org/pull/1636\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">contribuições</a> e comentários heio de idéias sobre o processo geral de tradução, bem como por manter a tradução japonesa.</li>\n<li><a href=\"https://github.com/ericnakagawa\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Eric Nakagawa</a> por gerenciar nosso processo de tradução anterior.</li>\n<li><a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Brian Vaughn</a> por configurar a <a href=\"/languages\">página de idiomas</a> e gerenciar todos os subdomínios.</li>\n</ul>\n<p>E finalmente, obrigada a <a href=\"https://twitter.com/dan_abramov\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Dan Abramov</a> por me dar esta oportunidade e ser um grande mentor ao longo do caminho.</p>","excerpt":"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. Além disso, as três linguagens a seguir concluíram a tradução da maioria dos documentos do React! 🎉 Espanhol: es.reactjs.org Japonês: ja.reactjs.org Português do Brasil: pt-br…","frontmatter":{"title":"O React já esta traduzido? ¡Sí! Sim! はい！","next":null,"prev":null,"author":[{"frontmatter":{"name":"Nat Alison","url":"https://twitter.com/tesseralis"}}]},"fields":{"date":"23 de fevereiro de 2019","path":"content/blog/2019-02-23-is-react-translated-yet.md","slug":"/blog/2019/02/23/is-react-translated-yet.html"}},"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"title":"React v17.0"},"fields":{"slug":"/blog/2020/10/20/react-v17.html"}}},{"node":{"frontmatter":{"title":"Apresentando o novo JSX Transform"},"fields":{"slug":"/blog/2020/09/22/introducing-the-new-jsx-transform.html"}}},{"node":{"frontmatter":{"title":"React v17.0 Candidato à lançamento: Sem novas funcionalidades"},"fields":{"slug":"/blog/2020/08/10/react-v17-rc.html"}}},{"node":{"frontmatter":{"title":"React v16.13.0"},"fields":{"slug":"/blog/2020/02/26/react-v16.13.0.html"}}},{"node":{"frontmatter":{"title":"Construindo Ótimas Experiências de Usuário com Modo Concorrente e Suspense"},"fields":{"slug":"/blog/2019/11/06/building-great-user-experiences-with-concurrent-mode-and-suspense.html"}}},{"node":{"frontmatter":{"title":"Preparando para o Futuro com as Prereleases React"},"fields":{"slug":"/blog/2019/10/22/react-release-channels.html"}}},{"node":{"frontmatter":{"title":"Apresentando o novo React DevTools"},"fields":{"slug":"/blog/2019/08/15/new-react-devtools.html"}}},{"node":{"frontmatter":{"title":"React v16.9.0 e a atualização do Roadmap"},"fields":{"slug":"/blog/2019/08/08/react-v16.9.0.html"}}},{"node":{"frontmatter":{"title":"O React já esta traduzido? ¡Sí! Sim! はい！"},"fields":{"slug":"/blog/2019/02/23/is-react-translated-yet.html"}}},{"node":{"frontmatter":{"title":"React v16.8: O React com Hooks"},"fields":{"slug":"/blog/2019/02/06/react-v16.8.0.html"}}}]}},"pageContext":{"slug":"/blog/2019/02/23/is-react-translated-yet.html"}},"staticQueryHashes":[]}