mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-12 00:27:21 +02:00
331 lines
No EOL
48 KiB
HTML
331 lines
No EOL
48 KiB
HTML
<!DOCTYPE html><html lang="ko"><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="도큐사우르스에서는 [Crowdin](https://crowdin.com/)를 사용해 번역 기능을 쉽게 추가할 수 있습니다. 영어로 작성된 문서가 작성되면 커뮤니티 기반으로 사용자가 직접 번역할 수 있는 Crowdin으로 업데이트됩니다. 영어 문자열로 작성된 최상위 페이지에서 번역할 대상 문자열은 `<translate>` 태그로 감싸지고 태그 안의 문자열은 번역될 수 있습니다. 다른 제목이나 라벨도 발견되면 적절하게 번역될 수 있습니다."/><meta name="docsearch:version" content="1.13.0"/><meta name="docsearch:language" content="ko"/><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="도큐사우르스에서는 [Crowdin](https://crowdin.com/)를 사용해 번역 기능을 쉽게 추가할 수 있습니다. 영어로 작성된 문서가 작성되면 커뮤니티 기반으로 사용자가 직접 번역할 수 있는 Crowdin으로 업데이트됩니다. 영어 문자열로 작성된 최상위 페이지에서 번역할 대상 문자열은 `<translate>` 태그로 감싸지고 태그 안의 문자열은 번역될 수 있습니다. 다른 제목이나 라벨도 발견되면 적절하게 번역될 수 있습니다."/><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="/ko"><img class="logo" src="/img/docusaurus.svg" alt="Docusaurus"/><h2 class="headerTitleWithLogo">Docusaurus</h2></a><a href="/ko/versions"><h3>1.13.0</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a href="/docs/ko/installation" target="_self">Docs</a></li><li class=""><a href="/docs/ko/tutorial-setup" target="_self">Tutorial</a></li><li class=""><a href="/ko/users" target="_self">사용자</a></li><li class=""><a href="/blog/" target="_self">블로그</a></li><li class=""><a href="https://github.com/facebook/docusaurus" target="_self">GitHub</a></li><span><li><a id="languages-menu" href="#"><img class="languages-icon" src="/img/language.svg" alt="Languages icon"/>한국어</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/pt-BR/translation">Português (Brasil)</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">번역을 도와주세요</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>가이드</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">시작하기<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/ko/installation">Installation</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/site-preparation">Site Preparation</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/site-creation">Creating your site</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/publishing">Publishing your site</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/docker">Docker</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle collapsible">가이드<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/ko/adding-blog">Adding a Blog</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/custom-pages">Custom Pages</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/search">Enabling Search</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/navigation">Navigation and Sidebars</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/ko/translation">Translations & Localization</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/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/ko/commands">CLI Commands</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/doc-markdown">Markdown Features</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/api-pages">Pages and Styles</a></li><li class="navListItem"><a class="navItem" href="/docs/ko/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"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/docusaurus/ko" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Translations & Localization</h1></header><article><div><span><p>도큐사우르스에서는 <a href="https://crowdin.com/">Crowdin</a>를 사용해 번역 기능을 쉽게 추가할 수 있습니다. 영어로 작성된 문서가 작성되면 커뮤니티 기반으로 사용자가 직접 번역할 수 있는 Crowdin으로 업데이트됩니다. 영어 문자열로 작성된 최상위 페이지에서 번역할 대상 문자열은 <code><translate></code> 태그로 감싸지고 태그 안의 문자열은 번역될 수 있습니다. 다른 제목이나 라벨도 발견되면 적절하게 번역될 수 있습니다.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="도큐사우르스에서-번역-관련-설정하기"></a><a href="#도큐사우르스에서-번역-관련-설정하기" 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>도큐사우르스에서 번역 관련 설정하기</h2>
|
||
<p>도큐사우르스에서 번역을 위한 예제 파일을 만들기 위해서는 <code>examples</code> 스크립트를 <code>translations</code> 인자와 함께 실행합니다.</p>
|
||
<pre><code class="hljs css language-bash">npm run examples translations
|
||
</code></pre>
|
||
<p>또는</p>
|
||
<pre><code class="hljs css language-bash">yarn examples translations
|
||
</code></pre>
|
||
<p>스크립트가 실행되면 다음 파일이 생성됩니다.</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><code>help-with-translations.js</code> 파일을 번역작업을 위한 가이드로 활용할 수 있습니다. 하지만 실제 저장소에 커밋할 필요는 없습니다 (파일을 삭제해도 괜찮습니다). 하지만, 도움말 페이지가 필요하고 다른 문서가 없다면 파일명을 <code>help.js</code>으로 바꾸어서 사용할 수도 있습니다.</p>
|
||
</blockquote>
|
||
<ul>
|
||
<li><p><code>languages.js</code> 파일에서는 여러분의 사이트를 어떤 언어로 번역하고자 하는지를 설정합니다. 기본값으로 영어는 활성화되어있습니다.</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. 여러분의 도큐사우르스 프로젝트의 위치가 <code>/project/website</code>이라면 <code>crowdin.yaml</code> 파일은 <code>/project/crowdin.yaml</code> 위치에 복사됩니다.</p></li>
|
||
</ul>
|
||
<h2><a class="anchor" aria-hidden="true" id="기존-문서-번역하기"></a><a href="#기존-문서-번역하기" 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>기존 문서 번역하기</h2>
|
||
<p>번역 작업을 위해 여러분의 문서 파일(예를 들어 <code>docs</code> 디렉토리에 있는 <code>.md</code> 파일들)의 위치를 옮길 필요는 없습니다. 파일들은 번역작업을 위해 Crowdin 서비스로 업로드됩니다.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="페이지-번역하기"></a><a href="#페이지-번역하기" 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>페이지 번역하기</h2>
|
||
<p>Pages allow you to customize the layout and specific content of pages like a custom index page or help page.</p>
|
||
<p>텍스트를 가지고 있는 페이지를 번역하고 싶다면 <code>website/pages/en</code> 디렉토리에 위치시켜야 합니다.</p>
|
||
<p>번역하고자 하는 문자열은 <code><translate></code> 태그로 감싸고 파일 상단에 <code>require</code> 상태를 추가해주어야 합니다.</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 tag"><span class="token tag"><span class="token punctuation"><</span>translate</span><span class="token punctuation">></span></span>This header will be translated<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>translate</span><span class="token punctuation">></span></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>문자열을 어떻게 번역해야 하는지 추가 정보를 제공하기 위해 옵션 항목으로 설명을 추가할 수도 있습니다.</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 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>flower, not verb<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Rose<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>translate</span><span class="token punctuation">></span></span>
|
||
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>
|
||
</code></pre>
|
||
<blockquote>
|
||
<p><code><translate></code> 태그는 일반 문자열인 경우에는 적절하게 동작합니다. 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. 이런 경우에는 번역하지 않을 문자열을 지정하거나 문자열 사이에 번역할 대상만 <code><translate></code> 태그로 지정하는 방법을 사용할 수 있습니다.</p>
|
||
</blockquote>
|
||
<h2><a class="anchor" aria-hidden="true" id="번역할-문자열-수집하기"></a><a href="#번역할-문자열-수집하기" 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>번역할 문자열 수집하기</h2>
|
||
<p>지역화된 페이지 내의 문자열은 추출되어 Crowdin에 제공되어야 합니다.</p>
|
||
<p><code>website/package.json</code> 파일에 다음과 같은 스크립트를 추가합니다.</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>스크립트를 실행하면 영어에서 다른 문자열로 번역해야 하는 모든 문자열이 포함된 <code>website/i18n/en.json</code> 파일이 생성됩니다.</p>
|
||
<p>스크립트에는 다음과 같은 항목에서 뽑아낸 텍스트가 포함됩니다.</p>
|
||
<ul>
|
||
<li>문서의 마크다운 헤더에 있는 <code>title</code>, <code>sidebar_label</code> 문자열</li>
|
||
<li><code>sidebars.json</code>에 포함된 카테고리 이름</li>
|
||
<li><code>siteConfig.js</code> 파일에 있는 문구</li>
|
||
<li><code>siteConfig.js</code> 파일에 있는 헤더 링크 항목의 <code>label</code> 문자열</li>
|
||
<li><code>pages</code> 디렉토리에 있는 <code>.js</code> 파일 내에서 <code><translate></code> 태그로 감싼 문자열</li>
|
||
</ul>
|
||
<h3><a class="anchor" aria-hidden="true" id="추가로-번역할-문자열"></a><a href="#추가로-번역할-문자열" 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>추가로 번역할 문자열</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><code>localized-strings</code> 항목의 문자열은 문서 내 콘텐츠에 포함된 문자열이고 <code>pages-strings</code> 항목의 문자열은 문서 내 메타데이터(타이틀, 링크 등)를 처리합니다.</p>
|
||
<p>아래 예제를 참고하세요.</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>예제로 제공되는 생성된 <code>website/i18n/en.json</code> 파일을 참고하세요.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="어떻게-문자열이-번역되는가"></a><a href="#어떻게-문자열이-번역되는가" 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>어떻게 문자열이 번역되는가</h2>
|
||
<p>Docusaurus itself does not do any translation from one language to another. Instead, it integrates <a href="https://crowdin.com/">Crowdin</a> to upload translations and then downloads the appropriately translated files from Crowdin.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="도큐사우르스에서는-어떻게-번역된-문자열을-사용하는가"></a><a href="#도큐사우르스에서는-어떻게-번역된-문자열을-사용하는가" 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>도큐사우르스에서는 어떻게 번역된 문자열을 사용하는가</h2>
|
||
<p>This section provides context about how translations in Docusaurus works.</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>A Docusaurus site has many strings used throughout it that require localization. However, maintaining a list of strings used throughout a site can be laborious. Docusaurus simplifies this by centralizing strings.</p>
|
||
<p>The header navigation, for example, can have links to 'Home' or your 'Blog'. This and other strings found in the headers and sidebars of pages are extracted and placed into <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. Then, when the Spanish pages are generated, Docusaurus will replace the English version of corresponding strings with translated strings from the corresponding localized strings file (e.g. In a Spanish enabled site 'Help' will become 'Ayuda').</p>
|
||
<h3><a class="anchor" aria-hidden="true" id="markdown-files"></a><a href="#markdown-files" 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>Markdown Files</h3>
|
||
<p>For documentation files themselves, translated versions of these files are downloaded and then rendered through the proper layout template.</p>
|
||
<h3><a class="anchor" aria-hidden="true" id="other-pages"></a><a href="#other-pages" 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>Other Pages</h3>
|
||
<p>For other pages, Docusaurus will automatically transform all <code><translate></code> tags it finds into function calls that return the translated strings from the corresponding localized file <em><code>locale.json</code></em>.</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 is a company that provides translation services. For Open Source projects, Crowdin provides free string translations.</p>
|
||
<p>Create your translation project on <a href="https://crowdin.com/">Crowdin</a>. You can use <a href="https://support.crowdin.com/translation-process-overview/">Crowdin's guides</a> to learn more about the translations work flow. <em>We suggest that you deselect and do not include "English" as a translatable language to prevent the creation of <code>en-US</code> localization files as this can lead to confusion.</em></p>
|
||
<blockquote>
|
||
<p>Crowdin 설정에서 "Duplicate Strings" 항목은 <a href="https://support.crowdin.com/api/create-project/">"Hide - all duplicates will share the same translation"</a>으로 설정합니다. 이렇게 설정하면 다른 버전의 문서에서 같은 문자열은 하나의 번역을 사용하도록 할 수 있습니다.</p>
|
||
</blockquote>
|
||
<p>Your project will need a <code>crowdin.yaml</code> file generated. If you ran <code>yarn examples translations</code> or <code>npm run examples translations</code>, this file was created for you on the same level as your <code>website</code> directory.</p>
|
||
<blockquote>
|
||
<p><code>crowdin</code>을 콘솔창에서 설치하기를 원할 수도 있다. 이런 경우에는 <a href="https://support.crowdin.com/cli-tool/">설치 가이드</a>를 참고하세요.</p>
|
||
</blockquote>
|
||
<p>The example below can be automatically generated by the Docusaurus cli with the <code>examples</code> script. It should be placed in the top level of your project directory to configure how and what files are uploaded/downloaded.</p>
|
||
<p>Below is an example Crowdin configuration for the respective languages: German, Spanish, French, Japanese, Korean, Bahasa Indonesia, Portuguese Brazilian, Chinese Simplified, and Chinese Traditional.</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>You can go <a href="https://support.crowdin.com/configuration-file/">here</a> to learn more about customizing your <code>crowdin.yaml</code> file.</p>
|
||
<h3><a class="anchor" aria-hidden="true" id="setup-the-crowdin-scripts"></a><a href="#setup-the-crowdin-scripts" 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>Setup the Crowdin Scripts</h3>
|
||
<p>You will want to manually sync your files to and from Crowdin. The sync process will upload any markdown files in <code>/docs</code> as well as translatable strings in <code>website/i18n/en.json</code>. (These strings can be generated by running <code>yarn write-translations</code>.)</p>
|
||
<p>You can add the following to your <code>package.json</code> to manually trigger 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="manual-file-sync"></a><a href="#manual-file-sync" 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>Manual File Sync</h3>
|
||
<p>You will always want to upload your markdown files and translatable strings first and the download the translations section. So run the commands in this order:</p>
|
||
<pre><code class="hljs css language-bash">CROWDIN_DOCUSAURUS_PROJECT_ID=YOUR_CROWDIN_PROJECT_ID CROWDIN_DOCUSAURUS_API_KEY=YOUR_CROWDIN_API_KEY yarn run crowdin-upload
|
||
CROWDIN_DOCUSAURUS_PROJECT_ID=YOUR_CROWDIN_PROJECT_ID CROWDIN_DOCUSAURUS_API_KEY=YOUR_CROWDIN_API_KEY yarn run crowdin-download
|
||
</code></pre>
|
||
<blockquote>
|
||
<p><code>YOUR_CROWDIN_PROJECT_ID</code> 항목은 Crowdin 프로젝트 이름을 설정합니다. 예를 들어 <a href="https://crowdin.com/project/docusaurus/">https://crowdin.com/project/docusaurus/</a> Url에서 <code>docusaurus</code> 문자열을 설정합니다. <code>YOUR_CROWDIN_API_KEY</code> 항목은 비밀번호와 같은 유일한 키값을 지정합니다. Crowdin 프로젝트 <code>Settings</code> 항목 중 <code>API</code> 탭에서 찾을 수 있습니다.</p>
|
||
<p>명령행을 실행하기 위해서는 환경변수에서 Crowdin 프로젝트 id와 api 키값(<code>CROWDIN_PROJECT_ID</code>, <code>CROWDIN_API_KEY</code>) 을 설정해주어야 합니다. 위에서처럼 인라인 명령행에 설정값을 추가할 수도 있고 <code>.bashrc</code> 또는 <code>.bash_profile</code> 파일에 추가할 수도 있습니다.</p>
|
||
<p>여러분의 컴퓨터에서 하나 이상의 도큐사우르스 프로젝트 지역화를 처리하고자 한다면 환경변수의 이름을 구분할 수 있는 고유한 값으로 변경해주어야 합니다(<code>CROWDIN_PROJECTNAME_PROJECT_ID</code>, <code>CROWDIN_PROJECTNAME_API_KEY</code>).</p>
|
||
<p>파일들이 생성되고 나면 <code>website/i18n</code> 또는 <code>website/translated_docs</code> 디렉토리에 파일을 가지고 있을 필요가 없습니다. <code>website/i18n/*</code>와 <code>website/translated_docs</code>에 <code>.gitignore</code> 파일을 추가해줍니다.</p>
|
||
</blockquote>
|
||
<h3><a class="anchor" aria-hidden="true" id="automated-file-sync-using-circleci"></a><a href="#automated-file-sync-using-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>Automated File Sync Using CircleCI</h3>
|
||
<p>You can automate pulling down and uploading translations for your files using the <a href="https://circleci.com">CircleCI</a> web continuous integration service.</p>
|
||
<p>먼저 여러분의 프로젝트 디렉토리에서 <code>.circleci/config.yml</code> 파일을 열고 번역할 영어 파일을 업로드하고 번역된 파일을 Crowdin CLI를 사용해 내려받을 수 있는 단계를 포함하도록 업데이트합니다. <code>.circleci/config.yml</code> 파일 예제는 아래를 참고하세요.</p>
|
||
<pre><code class="hljs css language-yaml"><span class="hljs-comment"># If you only want circle to run on direct commits to master, you can uncomment this out</span>
|
||
<span class="hljs-comment"># and uncomment the filters: *filter-only-master down below too</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"># specify the version you desire here</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-attr"> - run:</span>
|
||
<span class="hljs-attr"> name:</span> <span class="hljs-string">Deploying</span> <span class="hljs-string">to</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 "<GITHUB_USERNAME>@users.noreply.github.com"
|
||
git config --global user.name "<YOUR_NAME>"
|
||
echo "machine github.com login <GITHUB_USERNAME> password $GITHUB_TOKEN" > ~/.netrc
|
||
# install Docusaurus and generate file of English strings
|
||
- cd website && yarn install && yarn run write-translations && cd ..
|
||
# crowdin install
|
||
- sudo apt-get install default-jre
|
||
- wget https://artifacts.crowdin.com/repo/deb/crowdin.deb -O crowdin.deb
|
||
- sudo dpkg -i crowdin.deb
|
||
# translations upload/download
|
||
- crowdin --config crowdin.yaml upload sources --auto-update -b master
|
||
- crowdin --config crowdin.yaml download -b master
|
||
# build and publish website
|
||
cd website && GIT_USER=<GIT_USER> yarn run 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-attr"> - deploy-website:</span>
|
||
<span class="hljs-comment"># filters: *filter-only-master</span>
|
||
</code></pre>
|
||
<p>The <code>crowdin</code> command uses the <code>crowdin.yaml</code> file generated with the <code>examples</code> script. It should be placed in your project directory to configure how and what files are uploaded/downloaded.</p>
|
||
<p>Note that in the <code>crowdin.yaml</code> file, <code>CROWDIN_PROJECT_ID</code> and <code>CROWDIN_API_KEY</code> are environment variables set-up in Circle for your Crowdin project. They can be found in your Crowdin project settings.</p>
|
||
<p>Now, Circle will help you automatically get translations prior to building your website. The provided <code>crowdin.yaml</code> file will copy translated documents into <code>website/translated_docs/</code>, and translated versions of the <code>i18n/en.json</code> strings file will into <code>i18n/${language}.json</code>.</p>
|
||
<p>If you wish to use Crowdin on your machine locally, you can install the <a href="https://support.crowdin.com/cli-tool/">Crowdin CLI tool</a> and run the same commands found in the <code>circle.yaml</code> file. The only difference is that you must set <code>project_identifier</code> and <code>api_key</code> values in the <code>crowdin.yaml</code> file since you will not have Circle environment variables set up.</p>
|
||
<h2><a class="anchor" aria-hidden="true" id="이미-번역된-문서-번역하기"></a><a href="#이미-번역된-문서-번역하기" 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>이미 번역된 문서 번역하기</h2>
|
||
<p>If you wish to have translation and versioning for your documentation, add the following section to the end of your <code>crowdin.yaml</code> file:</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>Translated, versioned documents will be copied into <code>website/translated_docs/${language}/${version}/</code>.</p>
|
||
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/navigation"><span class="arrow-prev">← </span><span>Navigation and Sidebars</span></a><a class="docs-next button" href="/docs/ko/versioning"><span>Versioning</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#도큐사우르스에서-번역-관련-설정하기">도큐사우르스에서 번역 관련 설정하기</a></li><li><a href="#기존-문서-번역하기">기존 문서 번역하기</a></li><li><a href="#페이지-번역하기">페이지 번역하기</a></li><li><a href="#번역할-문자열-수집하기">번역할 문자열 수집하기</a><ul class="toc-headings"><li><a href="#추가로-번역할-문자열">추가로 번역할 문자열</a></li></ul></li><li><a href="#어떻게-문자열이-번역되는가">어떻게 문자열이 번역되는가</a></li><li><a href="#도큐사우르스에서는-어떻게-번역된-문자열을-사용하는가">도큐사우르스에서는 어떻게 번역된 문자열을 사용하는가</a><ul class="toc-headings"><li><a href="#strings">Strings</a></li><li><a href="#markdown-files">Markdown Files</a></li><li><a href="#other-pages">Other Pages</a></li></ul></li><li><a href="#crowdin">Crowdin</a><ul class="toc-headings"><li><a href="#setup-the-crowdin-scripts">Setup the Crowdin Scripts</a></li><li><a href="#manual-file-sync">Manual File Sync</a></li><li><a href="#automated-file-sync-using-circleci">Automated File Sync Using CircleCI</a></li></ul></li><li><a href="#이미-번역된-문서-번역하기">이미 번역된 문서 번역하기</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/ko/installation">Getting Started</a><a href="
|
||
/docs/ko/versioning">Versioning</a><a href="
|
||
/docs/ko/translation">Localization</a><a href="
|
||
/docs/ko/search">Adding Search</a></div><div class="footerSection"><h5>Community</h5><a href="/ko/help">Help</a><a href="/ko/users">User Showcase</a><a href="/ko/about-slash">About</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 © 2019 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:ko","version:1.13.0"]}
|
||
});
|
||
</script></body></html> |