mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-10 23:57:22 +02:00
333 lines
No EOL
51 KiB
HTML
333 lines
No EOL
51 KiB
HTML
<!DOCTYPE html><html lang="pt-BR"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Translations & Localization · Docusaurus</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="O Docusaurus permite que seu site possa ser facilmente traduzido usando o [Crowdin](https://crowdin.com/). Os arquivos de documentação escritos em inglês são enviados ao Crowdin para serem traduzidos por usuários dentro de uma comunidade. Páginas de nível superior escritas em inglês podem ser traduzidas apenas colocando as strings que você quer traduzidas dentro de tags `<translate>`. Outros títulos e rótulos também serão encontrados e traduzidos adequadamente."/><meta name="docsearch:version" content="1.14.4"/><meta name="docsearch:language" content="pt-BR"/><meta property="og:title" content="Translations & Localization · Docusaurus"/><meta property="og:type" content="website"/><meta property="og:url" content="https://docusaurus.io/"/><meta property="og:description" content="O Docusaurus permite que seu site possa ser facilmente traduzido usando o [Crowdin](https://crowdin.com/). Os arquivos de documentação escritos em inglês são enviados ao Crowdin para serem traduzidos por usuários dentro de uma comunidade. Páginas de nível superior escritas em inglês podem ser traduzidas apenas colocando as strings que você quer traduzidas dentro de tags `<translate>`. Outros títulos e rótulos também serão encontrados e traduzidos adequadamente."/><meta property="og:image" content="https://docusaurus.io/img/docusaurus.png"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://docusaurus.io/img/docusaurus.png"/><link rel="shortcut icon" href="/img/docusaurus.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://docusaurus.io/blog/atom.xml" title="Docusaurus Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://docusaurus.io/blog/feed.xml" title="Docusaurus Blog RSS Feed"/><script>
|
||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||
|
||
ga('create', 'UA-44373548-31', 'auto');
|
||
ga('send', 'pageview');
|
||
</script><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/code-blocks-buttons.js"></script><script src="https://unpkg.com/vanilla-back-to-top@7.1.14/dist/vanilla-back-to-top.min.js"></script><script>
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
addBackToTop(
|
||
{"zIndex":100}
|
||
)
|
||
});
|
||
</script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/prism.css"/><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/pt-BR"><img class="logo" src="/img/docusaurus.svg" alt="Docusaurus"/><h2 class="headerTitleWithLogo">Docusaurus</h2></a><a href="/pt-BR/versions"><h3>1.14.4</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a href="/docs/pt-BR/installation" target="_self">Documentação</a></li><li class=""><a href="/docs/pt-BR/tutorial-setup" target="_self">Tutorial</a></li><li class=""><a href="/pt-BR/users" target="_self">Usuários</a></li><li class=""><a href="/blog/" target="_self">Blog</a></li><li class=""><a href="https://github.com/facebook/docusaurus" target="_blank">GitHub</a></li><span><li><a id="languages-menu" href="#"><img class="languages-icon" src="/img/language.svg" alt="Languages icon"/>Português (Brasil)</a><div id="languages-dropdown" class="hide"><ul id="languages-dropdown-items"><li><a href="/docs/en/translation">English</a></li><li><a href="/docs/fr/translation">Français</a></li><li><a href="/docs/ko/translation">한국어</a></li><li><a href="/docs/ro/translation">Română</a></li><li><a href="/docs/ru/translation">Русский</a></li><li><a href="/docs/zh-CN/translation">简体中文</a></li><li><a href="https://crowdin.com/project/docusaurus" target="_blank" rel="noreferrer noopener">Ajude-nos a traduzir</a></li></ul></div></li><script>
|
||
const languagesMenuItem = document.getElementById("languages-menu");
|
||
const languagesDropDown = document.getElementById("languages-dropdown");
|
||
languagesMenuItem.addEventListener("click", function(event) {
|
||
event.preventDefault();
|
||
|
||
if (languagesDropDown.className == "hide") {
|
||
languagesDropDown.className = "visible";
|
||
} else {
|
||
languagesDropDown.className = "hide";
|
||
}
|
||
});
|
||
</script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line1"></div><div class="line2"></div><div class="line3"></div></div></div><h2><i>›</i><span>Guias</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Primeiros passos<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/pt-BR/installation">Installation</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/site-preparation">Site Preparation</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/site-creation">Creating your site</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/publishing">Publishing your site</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/docker">Docker</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">Guias<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/pt-BR/adding-blog">Adding a Blog</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/custom-pages">Custom Pages</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/search">Enabling Search</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/navigation">Navigation and Sidebars</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/pt-BR/translation">Translations & Localization</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/versioning">Versioning</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">API<span class="arrow"><svg width="24" height="24" viewBox="0 0 24 24"><path fill="#565656" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></span></h3><ul class="hide"><li class="navListItem"><a class="navItem" href="/docs/pt-BR/commands">CLI Commands</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/doc-markdown">Markdown Features</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/api-pages">Pages and Styles</a></li><li class="navListItem"><a class="navItem" href="/docs/pt-BR/site-config">siteConfig.js</a></li></ul></div></div></section></div><script>
|
||
var coll = document.getElementsByClassName('collapsible');
|
||
var checkActiveCategory = true;
|
||
for (var i = 0; i < coll.length; i++) {
|
||
var links = coll[i].nextElementSibling.getElementsByTagName('*');
|
||
if (checkActiveCategory){
|
||
for (var j = 0; j < links.length; j++) {
|
||
if (links[j].classList.contains('navListItemActive')){
|
||
coll[i].nextElementSibling.classList.toggle('hide');
|
||
coll[i].childNodes[1].classList.toggle('rotate');
|
||
checkActiveCategory = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
coll[i].addEventListener('click', function() {
|
||
var arrow = this.childNodes[1];
|
||
arrow.classList.toggle('rotate');
|
||
var content = this.nextElementSibling;
|
||
content.classList.toggle('hide');
|
||
});
|
||
}
|
||
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
createToggler('#navToggler', '#docsNav', 'docsSliderActive');
|
||
createToggler('#tocToggler', 'body', 'tocActive');
|
||
|
||
var headings = document.querySelector('.toc-headings');
|
||
headings && headings.addEventListener('click', function(event) {
|
||
var el = event.target;
|
||
while(el !== headings){
|
||
if (el.tagName === 'A') {
|
||
document.body.classList.remove('tocActive');
|
||
break;
|
||
} else{
|
||
el = el.parentNode;
|
||
}
|
||
}
|
||
}, false);
|
||
|
||
function createToggler(togglerSelector, targetSelector, className) {
|
||
var toggler = document.querySelector(togglerSelector);
|
||
var target = document.querySelector(targetSelector);
|
||
|
||
if (!toggler) {
|
||
return;
|
||
}
|
||
|
||
toggler.onclick = function(event) {
|
||
event.preventDefault();
|
||
|
||
target.classList.toggle(className);
|
||
};
|
||
}
|
||
});
|
||
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/docusaurus/pt-BR" target="_blank" rel="noreferrer noopener">Translate</a><h1 id="__docusaurus" class="postHeaderTitle">Translations & Localization</h1></header><article><div><span><p>O Docusaurus permite que seu site possa ser facilmente traduzido usando o <a href="https://crowdin.com/">Crowdin</a>. Os arquivos de documentação escritos em inglês são enviados ao Crowdin para serem traduzidos por usuários dentro de uma comunidade. Páginas de nível superior escritas em inglês podem ser traduzidas apenas colocando as strings que você quer traduzidas dentro de tags <code><translate></code>. Outros títulos e rótulos também serão encontrados e traduzidos adequadamente.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="configurações-de-tradução-do-docusaurus"></a><a href="#configurações-de-tradução-do-docusaurus" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Configurações de tradução do Docusaurus</h2>
|
||
<p>Para gerar arquivos de exemplo de traduções do Docusaurus, execute o script <code>examples</code> na linha de comando, juntamente com o argumento <code>translations</code>:</p>
|
||
<pre><code class="hljs css language-bash">npm run examples translations
|
||
</code></pre>
|
||
<p>ou</p>
|
||
<pre><code class="hljs css language-bash">yarn examples translations
|
||
</code></pre>
|
||
<p>Isso criará os seguintes arquivos:</p>
|
||
<pre><code class="hljs css language-bash">pages/en/<span class="hljs-built_in">help</span>-with-translations.js
|
||
languages.js
|
||
../crowdin.yaml
|
||
</code></pre>
|
||
<ul>
|
||
<li>The <code>pages/en/help-with-translations.js</code> file includes the same starter help page generated by the <code>examples</code> script but now includes translation tags.</li>
|
||
</ul>
|
||
<blockquote>
|
||
<p>No mais, você vai usar mesmo o <code>help-with-translations.js</code> como um guia para ativar traduções em suas outras páginas. Por isso, é melhor não enviar esse arquivo para o seu repositório (ou seja, você pode excluí-lo). No entanto, se você quiser uma página de ajuda e não tiver uma no momento, você pode renomear esse arquivo para <code>help.js</code> e usá-lo como um ponto de partida.</p>
|
||
</blockquote>
|
||
<ul>
|
||
<li><p>O arquivo <code>languages.js</code> diz ao Docusaurus quais idiomas você deseja ativar no seu site. Por padrão, esperamos que o inglês esteja ativado.</p></li>
|
||
<li><p>The <code>crowdin.yaml</code> file is used to configure Crowdin integration and is copied up one level into your Docusaurus project repo. Se o seu projeto Docusaurus reside em <code>/projeto/website</code>, então o <code>crowdin.yaml</code> será copiado para <code>/projeto/crowdin.yaml</code>.</p></li>
|
||
</ul>
|
||
<h2><a class="anchor" aria-hidden="true" id="traduzindo-sua-documentação-existente"></a><a href="#traduzindo-sua-documentação-existente" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Traduzindo sua documentação existente</h2>
|
||
<p>Seus arquivos de documentação (ou seja, os arquivos <code>.md</code> que vivem em seu diretório <code>docs</code>) não precisam ser alterados nem movidos para que possam ser traduzidos. Eles serão enviados ao Crowdin para serem diretamente traduzidos.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="ativando-traduções-em-páginas"></a><a href="#ativando-traduções-em-páginas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Ativando traduções em páginas</h2>
|
||
<p>Pages allow you to customize the layout and specific content of pages like a custom index page or help page.</p>
|
||
<p>Páginas que tenham textos que você quer traduzidos devem ser colocadas no diretório <code>website/pages/en</code>.</p>
|
||
<p>Ponha as strings que você quer traduzidas dentro de uma tag <code><translate></code>, e depois adicione a seguinte declaração <code>require</code> lá no começo do arquivo:</p>
|
||
<pre><code class="hljs css language-jsx"><span class="token operator">...</span>
|
||
<span class="token keyword">const</span> translate <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'../../server/translate.js'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>translate<span class="token punctuation">;</span>
|
||
<span class="token operator">...</span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h2</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>translate</span><span class="token punctuation">></span></span><span class="token plain-text">Esse título será traduzido</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>translate</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h2</span><span class="token punctuation">></span></span>
|
||
<span class="token operator">...</span>
|
||
</code></pre>
|
||
<p>Você também pode adicionar uma descrição opcional que dê mais contexto aos tradutores sobre como traduzir a string:</p>
|
||
<pre><code class="hljs css language-jsx"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>translate</span> <span class="token attr-name">desc</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>a peça de roupa, não o verbo<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token plain-text">Saia</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>translate</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span><span class="token plain-text">
|
||
</span></code></pre>
|
||
<blockquote>
|
||
<p>A tag <code><translate></code> geralmente funciona bem em strings de texto puro. If you have a string like "Docusaurus currently provides support to help your website use <a href="${siteConfig.baseUrl}${siteConfig.docsUrl}/${this.props.language}/translation.html">translations</a>", wrapping the <code><translation></code> tag around that entire string will cause issues because of the markdown linking, etc. Em casos assim, você pode ou deixar essas strings sem tradução ou usar um monte de tags <code><translate></code> nas partes de texto puro dessa string.</p>
|
||
</blockquote>
|
||
<h2><a class="anchor" aria-hidden="true" id="juntando-tudo-o-que-vai-ser-traduzido"></a><a href="#juntando-tudo-o-que-vai-ser-traduzido" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Juntando tudo o que vai ser traduzido</h2>
|
||
<p>As strings dentro das páginas que serão traduzidas precisam ser extraídas e entregues ao Crowdin.</p>
|
||
<p>Adicione o seguinte script ao seu arquivo <code>website/package.json</code>, se já não existir:</p>
|
||
<pre><code class="hljs css language-js">{
|
||
...
|
||
<span class="hljs-string">"scripts"</span>: {
|
||
<span class="hljs-string">"write-translations"</span>: <span class="hljs-string">"docusaurus-write-translations"</span>
|
||
},
|
||
...
|
||
}
|
||
</code></pre>
|
||
<p>Rodar esse script vai gerar um arquivo <code>website/i18n/en.json</code> contendo todas as strings que serão traduzidas do inglês para outros idiomas.</p>
|
||
<p>O script irá incluir o texto dos seguintes locais:</p>
|
||
<ul>
|
||
<li>Strings de <code>title</code> (título) e <code>sidebar_label</code> (rótulo na barra lateral) dos cabeçalhos de documentos em Markdown</li>
|
||
<li>Nomes de categorias no <code>sidebars.json</code></li>
|
||
<li>A tagline do site no <code>siteConfig.js</code></li>
|
||
<li>Os nomes (<code>label</code>) dos itens do menu de navegação dos <code>headerLinks</code> do <code>siteConfig.js</code></li>
|
||
<li>Strings que estiverem dentro de tags <code><translate></code> em todos os arquivos <code>.js</code> dentro de <code>pages</code></li>
|
||
</ul>
|
||
<h3><a class="anchor" aria-hidden="true" id="strings-personalizadas-para-traduções"></a><a href="#strings-personalizadas-para-traduções" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Strings personalizadas para traduções</h3>
|
||
<p>If you want to add additional custom translation strings or override any of the strings that get produced by the script that creates the <code>website/i18n/en.json</code> file, you can add a <code>website/data/custom-translation-strings.json</code> file. The file should have a form of:</p>
|
||
<pre><code class="hljs css language-json">{
|
||
<span class="hljs-attr">"localized-strings"</span>: {
|
||
<span class="hljs-attr">"docs"</span>: {
|
||
<span class="hljs-attr">"id"</span>: {
|
||
<span class="hljs-attr">"title"</span>: <span class="hljs-string">"string1"</span>,
|
||
<span class="hljs-attr">"sidebar_label"</span>: <span class="hljs-string">"string2"</span>
|
||
},
|
||
<span class="hljs-attr">"version-0.0.1-id"</span>: {
|
||
<span class="hljs-attr">"title"</span>: <span class="hljs-string">"string3"</span>,
|
||
<span class="hljs-attr">"sidebar_label"</span>: <span class="hljs-string">"string4"</span>
|
||
}
|
||
}
|
||
},
|
||
<span class="hljs-attr">"pages-strings"</span>: {
|
||
<span class="hljs-attr">"id3"</span>: <span class="hljs-string">"string3"</span>,
|
||
<span class="hljs-attr">"id4"</span>: <span class="hljs-string">"string4"</span>
|
||
}
|
||
}
|
||
</code></pre>
|
||
<p>onde as <code>localized-strings</code> representam strings presentes no conteúdo da sua documentação, e <code>pages-strings</code> representam metadados na sua documentação (p. ex.: títulos, links, etc).</p>
|
||
<p>Aqui está um exemplo:</p>
|
||
<pre><code class="hljs css language-json">{
|
||
<span class="hljs-attr">"_comment"</span>: <span class="hljs-string">"This file is used to provide custom strings for translations, including overriding defaults"</span>,
|
||
<span class="hljs-attr">"localized-strings"</span>: {
|
||
<span class="hljs-attr">"translation"</span>: <span class="hljs-string">"Translations and Localization"</span>
|
||
},
|
||
<span class="hljs-attr">"pages-strings"</span>: {
|
||
<span class="hljs-attr">"Help Translate|recruit community translators for your project"</span>: <span class="hljs-string">"Help Us Translate"</span>
|
||
}
|
||
}
|
||
</code></pre>
|
||
<p>Veja o <code>website/i18n/en.json</code> gerado para ver um exemplo.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="como-as-strings-são-traduzidas"></a><a href="#como-as-strings-são-traduzidas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Como as strings são traduzidas</h2>
|
||
<p>O Docusaurus sozinho não faz nenhuma tradução de um idioma para outro. Ao invés disso, ele se integra ao <a href="https://crowdin.com/">Crowdin</a>, enviando a ele tudo que vai ser traduzido e baixando dele os arquivos traduzidos.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="como-o-docusaurus-usa-as-strings-traduzidas"></a><a href="#como-o-docusaurus-usa-as-strings-traduzidas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Como o Docusaurus usa as strings traduzidas</h2>
|
||
<p>Essa seção vai explicar um pouco sobre como funcionam as traduções no Docusaurus.</p>
|
||
<h3><a class="anchor" aria-hidden="true" id="strings"></a><a href="#strings" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Strings</h3>
|
||
<p>Um site Docusaurus tem muitas strings usadas por todo o site que precisam de tradução. However, maintaining a list of strings used throughout a site can be laborious. O Docusaurus simplifica isso centralizando as strings.</p>
|
||
<p>The header navigation, for example, can have links to 'Home' or your 'Blog'. Essas e outras strings encontradas nos menus de navegação, cabeçalhos e barras laterais das páginas são extraídas e colocadas no arquivo <code>i18n/en.json</code>. When your files are translated, say into Spanish, an <code>i18n/es-ES.json</code> file will be downloaded from Crowdin. Daí, quando as páginas em espanhol são geradas, o Docusaurus irá substituir a versão em inglês das strings correspondentes com as versões traduzidas delas a partir do arquivo com as traduções (ou seja, em um site com traduções para espanhol ativadas, 'Help' vai virar 'Ayuda').</p>
|
||
<h3><a class="anchor" aria-hidden="true" id="arquivos-markdown"></a><a href="#arquivos-markdown" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Arquivos Markdown</h3>
|
||
<p>No caso dos próprios arquivos da documentação, as versões traduzidas desses arquivos serão baixadas e então renderizadas usando o modelo de layout adequado.</p>
|
||
<h3><a class="anchor" aria-hidden="true" id="outras-páginas"></a><a href="#outras-páginas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Outras páginas</h3>
|
||
<p>Para outras páginas, o Docusaurus vai automaticamente transformar todas as tags <code><translate></code> que ele encontrar em chamadas de função que vão retornar as strings traduzidas presentes no arquivo traduzido <em><code>locale.json</code></em> correspondente.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="crowdin"></a><a href="#crowdin" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Crowdin</h2>
|
||
<p>Crowdin é uma empresa que fornece serviços de tradução. O Crowdin disponibiliza seus serviços gratuitamente para projetos de código aberto.</p>
|
||
<p>Crie seu projeto de tradução no <a href="https://crowdin.com/">Crowdin</a>. Você pode seguir os <a href="https://support.crowdin.com/translation-process-overview/">guias do Crowdin</a> para saber mais sobre como funciona o processo de tradução. <em>Sugerimos que você desmarque e não inclua "English" como um idioma traduzível para evitar a criação de arquivos de tradução <code>en-US</code>, já que isso pode levar a confusão.</em></p>
|
||
<blockquote>
|
||
<p>Garanta que nas suas configurações do Crowdin, na seção Translations, que a opção "Duplicate Strings" esteja configurada como <a href="https://support.crowdin.com/api/create-project/">"Hide - all duplicates will share the same translation"</a>. Essa configuração irá garantir que strings idênticas entre versões compartilhem uma única tradução.</p>
|
||
</blockquote>
|
||
<p>Seu projeto vai precisar de um arquivo <code>crowdin.yaml</code> gerado. Se você já tiver executado <code>yarn examples translations</code> ou <code>npm run examples translations</code>, então esse arquivo já foi criado pra você no mesmo nível do seu diretório <code>website</code>.</p>
|
||
<blockquote>
|
||
<p>Você precisará instalar a interface de linha de comando do <code>Crowdin</code>. Para isso, siga as <a href="https://support.crowdin.com/cli-tool/">instruções de instalação</a>.</p>
|
||
</blockquote>
|
||
<p>O exemplo abaixo code ser gerado automaticamente pela CLI do Docusaurus através do script <code>examples</code>. Ele deve ser colocado no diretório raiz do seu projeto para configurar como e quais arquivos serão enviados/baixados.</p>
|
||
<p>Abaixo está um exemplo de configuração do Crowdin para os respectivos idiomas: alemão, espanhol, francês, japonês, coreano, Bahasa Indonésia, português do Brasil, chinês simplificado e chinês tradicional.</p>
|
||
<pre><code class="hljs css language-yaml"><span class="hljs-attr">project_identifier_env:</span> <span class="hljs-string">CROWDIN_DOCUSAURUS_PROJECT_ID</span>
|
||
<span class="hljs-attr">api_key_env:</span> <span class="hljs-string">CROWDIN_DOCUSAURUS_API_KEY</span>
|
||
<span class="hljs-attr">base_path:</span> <span class="hljs-string">'./'</span>
|
||
<span class="hljs-attr">preserve_hierarchy:</span> <span class="hljs-literal">true</span>
|
||
|
||
<span class="hljs-attr">files:</span>
|
||
|
||
<span class="hljs-bullet">-</span> <span class="hljs-attr">source:</span> <span class="hljs-string">'/docs/**/*.md'</span>
|
||
<span class="hljs-attr">translation:</span> <span class="hljs-string">'/website/translated_docs/%locale%/**/%original_file_name%'</span>
|
||
<span class="hljs-attr">languages_mapping:</span> <span class="hljs-meta">&anchor</span>
|
||
<span class="hljs-attr">locale:</span>
|
||
<span class="hljs-attr">'de':</span> <span class="hljs-string">'de'</span>
|
||
<span class="hljs-attr">'es-ES':</span> <span class="hljs-string">'es-ES'</span>
|
||
<span class="hljs-attr">'fr':</span> <span class="hljs-string">'fr'</span>
|
||
<span class="hljs-attr">'ja':</span> <span class="hljs-string">'ja'</span>
|
||
<span class="hljs-attr">'ko':</span> <span class="hljs-string">'ko'</span>
|
||
<span class="hljs-attr">'mr':</span> <span class="hljs-string">'mr-IN'</span>
|
||
<span class="hljs-attr">'pt-BR':</span> <span class="hljs-string">'pt-BR'</span>
|
||
<span class="hljs-attr">'zh-CN':</span> <span class="hljs-string">'zh-CN'</span>
|
||
<span class="hljs-attr">'zh-TW':</span> <span class="hljs-string">'zh-TW'</span>
|
||
</code></pre>
|
||
<p>Você pode passar <a href="https://support.crowdin.com/configuration-file/">aqui</a> para aprender mais sobre como personalizar seu arquivo <code>crowdin.yaml</code>.</p>
|
||
<h3><a class="anchor" aria-hidden="true" id="configurando-os-scripts-do-crowdin"></a><a href="#configurando-os-scripts-do-crowdin" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Configurando os scripts do Crowdin</h3>
|
||
<p>Você provavelmente vai querer sincronizar manualmente seus arquivos de e para o Crowdin. O processo de sincronização fará o upload de todos os arquivos Markdown em <code>/docs</code>, bem como as strings traduzíveis em <code>website/i18n/en.json</code>. (Essas strings podem ser geradas executando o script <code>yarn write-translations</code>.)</p>
|
||
<p>Você pode adicionar os seguintes scripts ao seu <code>package.json</code> para acionar manualmente o Crowdin.</p>
|
||
<pre><code class="hljs css language-js"><span class="hljs-string">"scripts"</span>: {
|
||
<span class="hljs-string">"crowdin-upload"</span>: <span class="hljs-string">"crowdin --config ../crowdin.yaml upload sources --auto-update -b master"</span>,
|
||
<span class="hljs-string">"crowdin-download"</span>: <span class="hljs-string">"crowdin --config ../crowdin.yaml download -b master"</span>
|
||
},
|
||
</code></pre>
|
||
<h3><a class="anchor" aria-hidden="true" id="sincronização-manual-de-arquivos"></a><a href="#sincronização-manual-de-arquivos" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Sincronização manual de arquivos</h3>
|
||
<p>É melhor que você sempre primeiro envie seus arquivos Markdown e strings traduzíveis e depois baixe o que já foi traduzido. Para isso, execute os comandos nesta ordem:</p>
|
||
<pre><code class="hljs css language-bash">CROWDIN_DOCUSAURUS_PROJECT_ID=SEU_ID_DE_PROJETO_CROWDIN CROWDIN_DOCUSAURUS_API_KEY=SUA_CHAVE_DE_API_CROWDIN yarn run crowdin-upload
|
||
CROWDIN_DOCUSAURUS_PROJECT_ID=SEU_ID_DE_PROJETO_CROWDIN CROWDIN_DOCUSAURUS_API_KEY=SUA_CHAVE_DE_API_CROWDIN yarn run crowdin-download
|
||
</code></pre>
|
||
<blockquote>
|
||
<p><code>SEU_ID_DE_PROJETO_CROWDIN</code> é o nome do seu projeto no Crowdin. P. ex., no caso de <a href="https://crowdin.com/project/docusaurus/">https://crowdin.com/project/docusaurus/</a>, essa variável teria o valor <code>docusaurus</code>. <code>SUA_CHAVE_DE_API_CROWDIN</code> é uma chave única e exclusiva, semelhante a uma senha. Você pode encontrá-la na aba <code>API</code> da página <code>Settings</code> do seu projeto do Crowdin.</p>
|
||
<p>Esses comandos exigem que se definam variáveis de ambiente para seu ID de projeto do Crowdin e sua chave de API (<code>CROWDIN_PROJECT_ID</code>, <code>CROWDIN_API_KEY</code>). Você pode defini-las inline, como feito acima, ou adicionar elas permanentemente ao seu <code>.bashrc</code> ou <code>.bash_profile</code>.</p>
|
||
<p>Caso você gerencie mais de um projeto do Docusaurus com traduções no seu computador, recomendamos mudar o nome das variáveis de ambiente para algo mais único (<code>ID_CROWDIN_NOMEPROJETO</code>, <code>CHAVE_API_CROWDIN_NOMEPROJETO</code>).</p>
|
||
<p>Já que os arquivos são gerados, não é necessário manter nenhum dos arquivos nos seus diretórios <code>website/i18n</code> ou <code>website/translated_docs</code> como parte do seu repositório. Logo, você pode adicionar <code>website/i18n/*</code> e <code>website/translated_docs</code> ao seu arquivo <code>.gitignore</code>.</p>
|
||
</blockquote>
|
||
<h3><a class="anchor" aria-hidden="true" id="sincronização-automatizada-usando-o-circleci"></a><a href="#sincronização-automatizada-usando-o-circleci" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Sincronização automatizada usando o CircleCI</h3>
|
||
<p>Você pode automatizar o download e upload de arquivos e traduções usando o serviço de integração contínua <a href="https://circleci.com">CircleCI</a>.</p>
|
||
<p>Primeiro de tudo, atualize o arquivo <code>.circleci/config.yml</code> no diretório do seu projeto para incluir as etapas de upload dos arquivos no idioma original a serem traduzidos e de download dos arquivos traduzidos usando a CLI do Crowdin. Aqui está um arquivo <code>.circleci/config.yml</code> de exemplo:</p>
|
||
<pre><code class="hljs css language-yaml"><span class="hljs-comment"># Se você quiser que o Circle entre em ação apenas em commits diretos à master,</span>
|
||
<span class="hljs-comment"># você pode descomentar as linhas seguintes e também o filtro `*filter-only-master`</span>
|
||
<span class="hljs-comment"># lá embaixo</span>
|
||
<span class="hljs-comment">#</span>
|
||
<span class="hljs-comment"># aliases:</span>
|
||
<span class="hljs-comment"># - &filter-only-master</span>
|
||
<span class="hljs-comment"># branches:</span>
|
||
<span class="hljs-comment"># only:</span>
|
||
<span class="hljs-comment"># - master</span>
|
||
|
||
<span class="hljs-attr">version:</span> <span class="hljs-number">2</span>
|
||
<span class="hljs-attr">jobs:</span>
|
||
<span class="hljs-attr">deploy-website:</span>
|
||
<span class="hljs-attr">docker:</span>
|
||
<span class="hljs-comment"># Especifique aqui a versão desejada</span>
|
||
|
||
<span class="hljs-bullet">-</span> <span class="hljs-attr">image:</span> <span class="hljs-string">circleci/node:8.11.1</span>
|
||
|
||
<span class="hljs-attr">steps:</span>
|
||
|
||
<span class="hljs-bullet">-</span> <span class="hljs-string">checkout</span>
|
||
<span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span>
|
||
<span class="hljs-attr">name:</span> <span class="hljs-string">Fazendo</span> <span class="hljs-string">deploy</span> <span class="hljs-literal">no</span> <span class="hljs-string">GitHub</span> <span class="hljs-string">Pages</span>
|
||
<span class="hljs-attr">command:</span> <span class="hljs-string">|
|
||
git config --global user.email
|
||
</span><span class="hljs-string">"<GITHUB_USERNAME>@users.noreply.github.com"</span>
|
||
<span class="hljs-string">git</span> <span class="hljs-string">config</span> <span class="hljs-string">--global</span> <span class="hljs-string">user.name</span> <span class="hljs-string">"<YOUR_NAME>"</span>
|
||
<span class="hljs-string">echo</span> <span class="hljs-string">"machine github.com login <GITHUB_USERNAME> password $GITHUB_TOKEN"</span> <span class="hljs-string">></span> <span class="hljs-string">~/.netrc</span>
|
||
<span class="hljs-comment"># Instala o Docusaurus e gera o arquivo das strings em inglês</span>
|
||
<span class="hljs-bullet">-</span> <span class="hljs-string">cd</span> <span class="hljs-string">website</span> <span class="hljs-string">&&</span> <span class="hljs-string">yarn</span> <span class="hljs-string">install</span> <span class="hljs-string">&&</span> <span class="hljs-string">yarn</span> <span class="hljs-string">run</span> <span class="hljs-string">write-translations</span> <span class="hljs-string">&&</span> <span class="hljs-string">cd</span> <span class="hljs-string">..</span>
|
||
<span class="hljs-comment"># Instala o Crowdin</span>
|
||
<span class="hljs-bullet">-</span> <span class="hljs-string">sudo</span> <span class="hljs-string">apt-get</span> <span class="hljs-string">install</span> <span class="hljs-string">default-jre</span>
|
||
<span class="hljs-bullet">-</span> <span class="hljs-string">wget</span> <span class="hljs-string">https://artifacts.crowdin.com/repo/deb/crowdin.deb</span> <span class="hljs-string">-O</span> <span class="hljs-string">crowdin.deb</span>
|
||
<span class="hljs-bullet">-</span> <span class="hljs-string">sudo</span> <span class="hljs-string">dpkg</span> <span class="hljs-string">-i</span> <span class="hljs-string">crowdin.deb</span>
|
||
<span class="hljs-comment"># Faz o upload/download das traduções</span>
|
||
<span class="hljs-bullet">-</span> <span class="hljs-string">crowdin</span> <span class="hljs-string">--config</span> <span class="hljs-string">crowdin.yaml</span> <span class="hljs-string">upload</span> <span class="hljs-string">sources</span> <span class="hljs-string">--auto-update</span> <span class="hljs-string">-b</span> <span class="hljs-string">master</span>
|
||
<span class="hljs-bullet">-</span> <span class="hljs-string">crowdin</span> <span class="hljs-string">--config</span> <span class="hljs-string">crowdin.yaml</span> <span class="hljs-string">download</span> <span class="hljs-string">-b</span> <span class="hljs-string">master</span>
|
||
<span class="hljs-comment"># build and publish website</span>
|
||
<span class="hljs-string">cd</span> <span class="hljs-string">website</span> <span class="hljs-string">&&</span> <span class="hljs-string">GIT_USER=<GIT_USER></span> <span class="hljs-string">yarn</span> <span class="hljs-string">run</span> <span class="hljs-string">publish-gh-pages</span>
|
||
|
||
<span class="hljs-attr">workflows:</span>
|
||
<span class="hljs-attr">version:</span> <span class="hljs-number">2</span>
|
||
<span class="hljs-attr">build_and_deploy:</span>
|
||
<span class="hljs-attr">jobs:</span>
|
||
|
||
<span class="hljs-bullet">-</span> <span class="hljs-attr">deploy-website:</span>
|
||
<span class="hljs-comment"># filters: *filter-only-master</span>
|
||
</code></pre>
|
||
<p>O comando <code>crowdin</code> usa o arquivo <code>crowdin.yaml</code> gerado pelo script <code>examples</code>. Ele deve ser colocado no diretório raiz do seu projeto para configurar como e quais arquivos serão enviados/baixados.</p>
|
||
<p>Observe que, no arquivo <code>crowdin.yaml</code>, <code>CROWDIN_PROJECT_ID</code> e <code>CROWDIN_API_KEY</code> são variáveis de ambiente relacionadas ao seu projeto do Crowdin e configuradas no Circle. Elas podem ser encontradas nas configurações do seu projeto no Crowdin.</p>
|
||
<p>Agora, o Circle vai automatizar para você a sincronização das traduções antes de fazer o processo de build do seu site. O arquivo <code>crowdin.yaml</code> fornecido copiará os documentos traduzidos para <code>website/translated_docs/</code>, e as versões traduzidas do arquivo <code>i18n/en.json</code> serão copiadas para <code>i18n/${idioma}.json</code>.</p>
|
||
<p>Caso você deseje usar o Crowdin localmente na sua máquina, você pode instalar a <a href="https://support.crowdin.com/cli-tool/">ferramenta de linha de comando do Crowdin</a> e executar os mesmos comandos encontrados no arquivo <code>circle.yaml</code>. A única diferença é que você precisa definir os valores de <code>project_identifier</code> e <code>api_key</code> no arquivo <code>crowdin.yaml</code>, já que você não vai ter as variáveis de ambiente do Circle configuradas.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="traduções-versionadas"></a><a href="#traduções-versionadas" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" 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>Traduções versionadas</h2>
|
||
<p>Caso você deseje manter versões traduzidas para cada versão da sua documentação, adicione a seguinte seção ao fim do seu arquivo <code>crowdin.yaml</code>:</p>
|
||
<pre><code class="hljs css language-yaml"> <span class="hljs-bullet">-</span>
|
||
<span class="hljs-attr">source:</span> <span class="hljs-string">'/website/versioned_docs/**/*.md'</span>
|
||
<span class="hljs-attr">translation:</span> <span class="hljs-string">'/website/translated_docs/%locale%/**/%original_file_name%'</span>
|
||
<span class="hljs-attr">languages_mapping:</span> <span class="hljs-meta">*anchor</span>
|
||
</code></pre>
|
||
<p>Documentos traduzidos e versionados serão copiados para <code>website/translated_docs/${idioma}/${versão}/</code>.</p>
|
||
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/pt-BR/navigation"><span class="arrow-prev">← </span><span>Navegação e Sidebars</span></a><a class="docs-next button" href="/docs/pt-BR/versioning"><span>Versionamento</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configurações-de-tradução-do-docusaurus">Configurações de tradução do Docusaurus</a></li><li><a href="#traduzindo-sua-documentação-existente">Traduzindo sua documentação existente</a></li><li><a href="#ativando-traduções-em-páginas">Ativando traduções em páginas</a></li><li><a href="#juntando-tudo-o-que-vai-ser-traduzido">Juntando tudo o que vai ser traduzido</a><ul class="toc-headings"><li><a href="#strings-personalizadas-para-traduções">Strings personalizadas para traduções</a></li></ul></li><li><a href="#como-as-strings-são-traduzidas">Como as strings são traduzidas</a></li><li><a href="#como-o-docusaurus-usa-as-strings-traduzidas">Como o Docusaurus usa as strings traduzidas</a><ul class="toc-headings"><li><a href="#strings">Strings</a></li><li><a href="#arquivos-markdown">Arquivos Markdown</a></li><li><a href="#outras-páginas">Outras páginas</a></li></ul></li><li><a href="#crowdin">Crowdin</a><ul class="toc-headings"><li><a href="#configurando-os-scripts-do-crowdin">Configurando os scripts do Crowdin</a></li><li><a href="#sincronização-manual-de-arquivos">Sincronização manual de arquivos</a></li><li><a href="#sincronização-automatizada-usando-o-circleci">Sincronização automatizada usando o CircleCI</a></li></ul></li><li><a href="#traduções-versionadas">Traduções versionadas</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/docusaurus_monochrome.svg" alt="Docusaurus" width="66" height="58"/></a><div class="footerSection"><h5>Docs</h5><a href="
|
||
/docs/pt-BR/installation">Getting Started</a><a href="
|
||
/docs/pt-BR/versioning">Versioning</a><a href="
|
||
/docs/pt-BR/translation">Localization</a><a href="
|
||
/docs/pt-BR/search">Adding Search</a></div><div class="footerSection"><h5>Community</h5><a href="/pt-BR/help">Help</a><a href="/pt-BR/users">User Showcase</a><a href="/pt-BR/about-slash">About</a></div><div class="footerSection"><h5>Legal</h5><a href="https://opensource.facebook.com/legal/privacy/" target="_blank" rel="noreferrer noopener">Privacy</a><a href="https://opensource.facebook.com/legal/terms/" target="_blank" rel="noreferrer noopener">Terms</a></div><div class="footerSection"><h5>Social</h5><div class="social"><a class="github-button" href="https://github.com/facebook/docusaurus" data-count-href="https://github.com/facebook/docusaurus/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">docusaurus</a></div><div class="social"><a href="https://twitter.com/docusaurus" class="twitter-follow-button">Follow @docusaurus</a></div><div class="social"><div class="fb-like" data-href="https://docusaurus.io" data-colorscheme="dark" data-layout="standard" data-share="true" data-width="225" data-show-faces="false"></div></div></div></section><a href="https://opensource.facebook.com/" target="_blank" rel="noreferrer noopener" class="fbOpenSource"><img src="/img/oss_logo.png" alt="Facebook Open Source" width="170" height="45"/></a><section class="copyright"><span>Copyright © 2020 Facebook Inc.</span> Landing images by <a href="https://undraw.co/">unDraw</a>.</section></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.fbAsyncInit = function() {FB.init({appId:'199138890728411',xfbml:true,version:'v2.7'});};(function(d, s, id){var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) {return;}js = d.createElement(s); js.id = id;js.src = '//connect.facebook.net/en_US/sdk.js';fjs.parentNode.insertBefore(js, fjs);}(document, 'script','facebook-jssdk'));
|
||
</script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script><script>
|
||
document.addEventListener('keyup', function(e) {
|
||
if (e.target !== document.body) {
|
||
return;
|
||
}
|
||
// keyCode for '/' (slash)
|
||
if (e.keyCode === 191) {
|
||
const search = document.getElementById('search_input_react');
|
||
search && search.focus();
|
||
}
|
||
});
|
||
</script><script>
|
||
var search = docsearch({
|
||
|
||
apiKey: '3eb9507824b8be89e7a199ecaa1a9d2c',
|
||
indexName: 'docusaurus',
|
||
inputSelector: '#search_input_react',
|
||
algoliaOptions: {"facetFilters":["language:pt-BR","version:1.14.4"]}
|
||
});
|
||
</script></body></html> |