번역

여러 문서 번역이 이미 서비스 중이며 언어 전환 메뉴에서 찾을 수 있습니다. 다른 번역은 작업 중입니다. 시작하려면 일반적으로 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로 빌드하여 게시합니다.

번역은 대략 다음과 같이 이루어집니다:

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

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

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

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

동기

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

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

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

번역을 통해 훨씬 더 많은 독자가 Python 문서를 이용할 수 있습니다. 번역을 통해 사람들은 자신 있는 언어로 Python을 배우고 사용할 수 있으며, 영어를 통해 학습해야 하는 추가 부담을 줄일 수 있습니다.

번역은 영어 문서도 개선합니다. 번역자는 원문을 면밀히 검토하며 종종 버그를 발견합니다. 따라서 번역은 다른 언어의 독자뿐만 아니라 Python 문서를 사용하고 문서에 기여하는 모든 사람에게 도움이 됩니다.

도움받는 방법

사용하는 언어의 팀 저장소가 이미 있다면(README에 텔레그램/디스코드 링크가 있을 수 있습니다) 참여하여 자신을 소개하십시오. 동료 번역자들이 기꺼이 도와줄 것입니다! 번역에 관한 일반적인 논의는 Python Docs 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 repository 및 번역 저장소(위 표 참조)의 로컬 복사본이 필요합니다. PO 파일은 CPython 저장소의 Doc/ 디렉터리 안에 있는 locales/LANG/LC_MESSAGES/ 폴더에 배치해야 합니다(LANG를 번역 언어 코드로 바꾸십시오).

그런 다음 빌드 대상 앞에 SPHINXOPTS="-D language=LANG" 변수를 추가하여 make로 빌드하거나, Sphinx directly를 사용하면서 -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 Docs Sphinx Theme은 어떻게 번역합니까?

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

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

로컬에서 번역하려면 Python Docs Sphinx Theme repository를 복제하고 다음 명령을 실행하여 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

번역한 후 repository에 풀 리퀘스트를 통해 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 참조).

각주