번역하기

여러 문서 번역이 이미 서비스 중이며 언어 전환기에서 찾을 수 있습니다. 다른 번역은 진행 중입니다. 시작하려면 저장소의 기여 가이드(보통 README 파일)와 이 페이지를 읽으십시오. 여러분의 언어가 아래 목록에 없다면 자유롭게 번역을 시작하십시오! 시작하려면 조율 문서를 참고하십시오.

번역과 진행 상황에 대한 자세한 내용은 translations.python.org를 참고하십시오.

언어

조정 팀

링크

아랍어 (ar)

Abdur-Rahmaan Janhangeer (@Abdur-rahmaanJ)

GitHub

벵골어 (bn-IN)

Kushal Das (@kushaldas)

GitHub

프랑스어 (fr)

Julien Palard (@JulienPalard)

AFPy/python-docs-fr, mirror

독일어 (de)

Swen Bachmann (@sba72)

GitHub

그리스어 (el)

Lysandros Nikolaou (@lysnikolaou),
Fanis Petkos (@thepetk),
Panagiotis Skias (@skpanagiotis)

GitHub

힌디어 (hi-IN)

Sanyam Khurana (@CuriousLearner)

GitHub

헝가리어 (hu)

GitHub

인도네시아어 (id)

Irvan Putra (@irvan-putra),
Jeff Jacobson (@jwjacobson),
Lutfi Zuchri (@lutfizuchri)

GitHub

이탈리아어 (it)

Alessandro Cucci (@acuccie3, email)

GitHub, original announcement

일본어 (ja)

Kinebuchi Tomohiko (@cocoatomo),
Atsuo Ishimoto (@atsuoishimoto)

GitHub

한국어 (ko)

오동권 (@flowdas)

GitHub

리투아니아어 (lt)

Albertas Gimbutas (@albertas, email)

original announcement

마라티어 (mr)

Satvik Mudgal (@satvikmudgal, email)

GitHub, coordinator transfer

페르시아어 (fa)

Alireza Shabani (@revisto),
Sepehr Rasouli (@sepehr-rs)

GitHub, Telegram

폴란드어 (pl)

Maciej Olko (@m-aciek),
Stan Ulbrych (@StanFromIreland)

GitHub, Transifex, original announcement

브라질 포르투갈어 (pt-br)

Rafael Fontenelle (@rffontenelle),
Marco Rougeth (@rougeth)

GitHub, guide, Telegram, article

펀자브어 (pa)

Bhuvansh Kataria (@BHUVANSH855),
Mohit Yadav (@mohityadav8),
Yashraj Jangra (@Yashraj-Jangra)

GitHub, Transifex

루마니아어 (ro)

Octavian Mustafa (@octaG-M, email)

GitHub

러시아어 (ru)

Daniil Kolesnikov (@dkqzz, email)

GitHub, Telegram, original announcement

중국어 간체 (zh-cn)

Shengjing Zhu (@zhsj),
Du, Meng (@dumeng)

GitHub, Transifex

스페인어 (es)

Raúl Cumplido (@raulcd)

GitHub

스웨덴어 (sv)

Daniel Nylander (@yeager)

GitHub

타밀어 (ta)

Murugan Santhosh (@terminaljoint),
Hari (@nammahari)

GitHub, Discord

중국어 번체 (zh-tw)

王威翔 Matt Wang (@mattwang44),
Josix Wang (@josix)

GitHub

튀르키예어 (tr)

Ege Akman (@egeakman)

GitHub, RTD

우크라이나어 (uk)

Dmytro Kazanzhy (@kazanzhy, email)

GitHub, Transifex

베트남어 (vi)

Duc-Tam Nguyen (@tamnd)

GitHub, Transifex

개요

문자열은 원본 문서에서 PO 파일로 추출되고, 번역된 뒤 번역 저장소에 업로드되며, docsbuild-scripts로 빌드되어 게시됩니다.
문자열은 원본 문서에서 PO 파일로 추출되고, 번역된 뒤 번역 저장소에 업로드되며, docsbuild-scripts로 빌드되어 게시됩니다.

번역은 대략 다음과 같이 진행됩니다:

  • 번역자는 문서를 직접 편집하는 대신 Sphinx로 Python 문서에서 생성한 gettext PO 파일 카탈로그를 작업합니다.

  • 팀마다 작업 방식이 다릅니다. 예를 들어, 번역자가 로컬에서 작업하는 팀도 있고 Transifex 같은 도구를 사용하는 팀도 있습니다. 번역되지 않은 메시지는 영어로 대체되므로, 번역이 완료되기 전에도 게시할 수 있습니다.

  • 번역은 번역 저장소에 커밋됩니다.

  • 완료된 번역은 docsbuild-scripts가 저장소에서 자동으로 가져와 docs.python.org에 게시합니다.

동기

Python 문서는 영어로 작성되어 있지만, Python은 전 세계에서 여러 언어로 가르치고 배우고 사용합니다. 영어를 모국어로 사용하는 사람은 세계 인구의 약 5%에 불과하며, 영어를 추가 언어로 구사하는 사람도 5분의 1이 채 되지 않습니다 [1]. 많은 사람에게 Python을 배운다는 것은 언어 장벽을 극복하는 일이기도 합니다. 이들은 Python뿐만 아니라 Python 언어의 문서를 읽을 수 있을 만큼의 영어도 배워야 합니다.

유엔 오픈 소스 원칙은 프로젝트가 문서를 제공하는 동시에 포용적인 참여를 장려할 것을 요구합니다 [2]. 문서를 영어로만 제공하면 문서의 혜택을 받을 수 있는 사람과 더 넓은 Python 커뮤니티에 참여할 수 있는 사람이 제한됩니다.

수십 개 언어로 쓰인 "Python"이라는 단어.

번역은 Python 문서를 훨씬 더 많은 독자가 접할 수 있게 합니다. 번역 덕분에 사람들은 자신 있는 언어로 Python을 배우고 사용할 수 있으며, 영어로 배워야 하는 추가 부담을 덜 수 있습니다.

번역은 영어 문서를 개선하기도 합니다. 번역자는 원문을 꼼꼼히 검토하며 버그를 발견하는 경우가 많습니다. 결과적으로 번역은 다른 언어의 독자뿐만 아니라 Python 문서를 사용하고 기여하는 모든 사람에게 도움이 됩니다.

도움을 받는 방법

여러분의 언어 팀 저장소가 이미 있다면(README에 Telegram/Discord 링크가 있을 수 있습니다), 참여하여 자신을 소개하십시오. 동료 번역자들이 기꺼이 도와줄 것입니다! 번역에 관한 일반적인 논의는 Python 문서 Discord의 #translations 채널과 Python Discourse의 번역 카테고리에서 이루어집니다.

스타일 가이드

번역하기 전에 일반 문서 스타일 가이드를 숙지해야 합니다. 번역에 관한 몇 가지 지침을 아래에서 설명합니다.

의미를 번역하십시오

가능한 한 원문에 가깝게 번역하도록 노력하십시오. 원문의 의미를 가장 잘 전달하도록 번역하는 데 집중하십시오.

성 중립성

많은 언어에는 문법적 성이 있습니다. 가능하고 자연스러운 경우에는 성 중립적이거나 포용적인 표현을 우선하여 사용하십시오. 영어 문서의 포용적인 어조를 반영하도록 노력하십시오.

역할과 링크

Python 문서에는 문서의 다른 부분으로 연결되는 롤(:role:`target`)이 많이 있습니다. :func:`print`나 :ref:`some-section` 같은 reStructuredText 역할의 대상은 번역하지 마십시오. 번역하면 링크가 깨집니다. 대체 텍스트(:role:`text <target>`)가 있으면 일반적으로 번역해야 합니다. 대상이 이름이나 용어가 아니라면 번역을 위해 대체 텍스트를 새로 넣을 수도 있습니다.

링크(`text <target>`_)도 비슷하게 처리해야 합니다. 가능하면 대상도 해당 언어에 맞는 것으로 바꿔야 합니다.

번역 품질

번역자는 영어와 번역하려는 언어를 모두 알아야 합니다. 번역자는 영어 문서와 비슷한 수준의 품질을 목표로 해야 합니다.

기계 번역에만 의존하지 마십시오. 기계 번역 도구는 작업 속도를 높이는 데 도움이 될 수 있지만, 부정확하거나 오해를 부르는 결과를 자주 내놓으므로 사람이 검토해야 합니다.

용어

문서에는 기술 용어가 가득합니다. 일부는 일반적인 프로그래밍에서 흔히 쓰여 번역어가 있지만, 다른 일부는 Python에 특화되어 있어 기존 번역어가 없습니다. 번역 팀은 이러한 용어의 번역을 일관되게 유지해야 하며, 이를 위해 용어집을 사용합니다.

번역어를 정할 때 참고할 일반적인 지침은 다음과 같습니다:

  • 새로운 용어를 만들기보다는 커뮤니티에서 이미 쓰는 관례를 따르십시오.

  • 사용자가 대체로 그 영어 단어에 익숙하다면 영어를 섞은 형태를 사용할 수 있습니다.

  • 흔히 쓰는 용어는 영어 단어를 그대로 쓰는 것이 가장 나을 수도 있습니다.

  • 다른 언어의 번역에서 그 단어를 어떻게 옮겼는지 참고하십시오.

  • 이름은 번역하지 않도록 주의하십시오.

  • 스스로 가장 적절하다고 판단하는 대로 하십시오.

  • 특정 용어를 번역할 때는 동료 번역자를 돕고 일관성을 유지할 수 있도록 번역 용어집에 기록하십시오.

방언

일부 번역은 서로 다른 여러 방언을 사용하는 사람들의 기여를 받으므로, 당연히 언어 표현에 차이가 생깁니다. 그러나 번역자는 파일과 섹션 안에서 일관성을 유지하도록 노력하는 것이 좋습니다.

코드 예제

코드 예제의 값, 즉 문자열 리터럴과 주석을 번역하십시오. 변수, 함수, 클래스, 인자, 어트리뷰트 이름을 포함한 키워드나 이름은 번역하지 마십시오. 다음은 튜토리얼에 있는 코드 블록을 번역한 예입니다:

def cheeseshop(kind, *arguments, **keywords):
    print("-- Czy jest może", kind, "?")
    print("-- Przykro mi, nie mamy już sera", kind)
    for arg in arguments:
        print(arg)
    print("-" * 40)
    for kw in keywords:
        print(kw, ":", keywords[kw])

Transifex

중요

Transifex의 python-doc 조직에는 많은 번역이 있지만, 그중 일부는 사용되지 않거나 조정 팀이 없습니다. 번역을 시작하기 전에 조정 팀이 있는지 확인하십시오.

여러 언어 프로젝트가 Transifex를 번역 인터페이스로 사용합니다. Transifex에서의 번역은 Weblate와 비슷한 웹 인터페이스를 통해 이루어집니다. python-newest 프로젝트를 번역해야 합니다. Transifex를 처음 사용한다면 시간을 내어 Transifex 문서의 다음 자료를 읽어 보는 것이 좋습니다:

이 조직 안에서 Python Docs Sphinx Theme 번역 프로젝트도 찾을 수 있습니다. Transifex에 관한 자세한 내용은 저희 문서를 참조하십시오.

자료

유용한 자료는 다음과 같습니다:

  • Git 부트캠프와 치트 시트:

    여러 번역 프로젝트가 풀 리퀘스트를 통해 기여를 받습니다. 대부분은 기여 방법을 안내하는 자체 가이드가 있지만, 이 자료에서도 유용한 팁을 얻을 수 있습니다.

  • 번역 이슈 및 개선 사항 GitHub 프로젝트:

    이 프로젝트에는 번역을 위해 Python 문서를 개선하려는 이슈와 풀 리퀘스트가 있습니다.

  • Python Pootle 아카이브:

    Pootle은 더 이상 번역에 사용되지 않습니다. 이전 Python 버전의 번역이 들어 있습니다.

번역 FAQ

문서 번역은 어떻게 빌드합니까?

특정 언어의 문서 번역을 빌드하려면 Python이 설치되어 있어야 하고, CPython 저장소와 번역 저장소(위 표 참조)의 로컬 사본이 있어야 합니다. PO 파일은 CPython 저장소의 Doc/ 디렉터리 안에 있는 locales/LANG/LC_MESSAGES/ 폴더(LANG은 번역 언어 코드로 바꿉니다)에 두어야 합니다.

그런 다음 대상 앞에 SPHINXOPTS="-D language=LANG" 변수를 추가하여 make로 빌드하거나, Sphinx를 직접 사용하면서 -D language=LANG 옵션을 추가하여 빌드할 수 있습니다. 예를 들면 다음과 같습니다:

# Build the HTML format of the Polish translation using make
make SPHINXOPTS="-D language=pl" html

# Build the HTML format of the Romanian translation using Sphinx directly
python -m sphinx -b html . build/html -D language=ro

Python 문서의 어느 버전을 작업해야 합니까?

번역할 때는 사용할 수 있는 최신 브랜치(최신 비알파 브랜치여야 합니다)에서 작업해야 하며, 그 후 번역은 해당 언어의 조정 팀이 전파해야 합니다.

Python 문서 Sphinx 테마는 어떻게 번역합니까?

Python 문서용 Sphinx 테마는 현지화를 지원합니다.

Transifex에서 번역하거나(자세한 내용은 Transifex에서 번역하기를 참조하십시오), 아래에 설명된 단계에 따라 로컬에서 번역할 수 있습니다.

로컬에서 번역하려면 Python Docs Sphinx Theme 저장소를 클론한 뒤 다음 명령을 실행하여 PO 파일을 생성하십시오. LANG은 문서 번역에 사용하는 것과 같은 언어 코드로 바꾸십시오:

python babel_runner.py extract
python babel_runner.py init -l LANG

그러면 파일은 다음 위치에 있습니다:

python-docs-theme/locale/LANG/LC_MESSAGES/python-docs-theme.po

번역을 마친 후에는 PO 파일을 저장소에 풀 리퀘스트로 제출하십시오. Git 사용에 관한 자세한 내용은 Git 부트캠프와 치트 시트를 참조하십시오.

원본이 변경된 후 기존 번역을 갱신하려면 다음을 실행하십시오:

python babel_runner.py update  # To update source for all languages
python babel_runner.py update -l LANG  # To update source just for LANG

제 언어의 조정 팀이 활동하지 않습니다. 어떻게 해야 합니까?

코디네이터를 맡고 싶다면 이 페이지 상단의 표에 자신을 추가하는 풀 리퀘스트를 devguide에 열고 @python/editorial-board 팀을 멘션하십시오.

문서가 이동된 후 번역을 어떻게 다시 병합합니까?

CPython 저장소에서 문서가 이동되면 번역된 메시지는 자동으로 옮겨지지 않으며 유실됩니다. 번역된 메시지는 새 위치로 병합하여 복구할 수 있습니다. Transifex 기반 번역에서는 Transifex의 번역 메모리가 자동으로 복사해 주므로 이 작업이 필요하지 않습니다.

pomerge 도구는 파일 경로와 관계없이 메시지를 대조하여 PO 파일 간에 번역을 병합합니다. 사용하려면 먼저 패키지를 설치하십시오:

pip install pomerge

그런 다음 특정 커밋의 번역을 병합하십시오(COMMIT_HASH는 파일이 이동되기 전의 커밋 해시로 바꾸십시오):

# These commands are to be run in the root of the translation repo

# Check out a commit before the move
git checkout COMMIT_HASH -- .

# Copy translations to a temporary dir
cp -r . /tmp/old-po-files

# Return to the current version
git checkout HEAD -- .

# Merge translations from temporary dir back in
pomerge --from /tmp/old-po-files/**/*.po --to **/*.po --clear

# Clean up temporary dir
rm -rf /tmp/old-po-files

pomerge를 실행한 후 변경 사항을 검토하고 갱신된 파일을 커밋하십시오. 줄 바꿈을 다시 해야 할 수도 있습니다(powrap 참조).

각주