Skip to content

Commit

Permalink
docs(i18n): translate i18n guide to korean (#4215)
Browse files Browse the repository at this point in the history
* Ready to Translate

* docs: translations for korean
93% completed

* docs: translations for korean
almost completed

* style(autofix.ci): automated formatting

* fix: use lowercase `.png` extension

* docs(i18n): translate `transifex.md`

* docs: use new images

* docs: further tidy up translation

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: scarf <greenscarf005@gmail.com>
  • Loading branch information
3 people authored Feb 11, 2024
1 parent 06ac1c7 commit a2a5cd9
Show file tree
Hide file tree
Showing 14 changed files with 898 additions and 0 deletions.
186 changes: 186 additions & 0 deletions doc/src/content/docs/ko/i18n/explanation/file_format.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
---
title: 번역 파일 포맷 (.po)
---

번역은 각 언어 및 국가별 언어 코드로 명명된 [`".po"` 파일(Portable Object)][po]에 저장됩니다. 예를
들어 스페인에서 사용되는 스페인어에 대한 번역은 `es_ES.po`에, 멕시코에서 사용되는 스페인어에 대한
번역은 `es_MX.po`에 저장됩니다.

[po]: https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html

평범한 텍스트 파일이므로 아무 텍스트 편집기를 써도 상관없으나 보통은
[Poedit](https://poedit.net)같은 전용 번역 편집기나 <https://translations.launchpad.net> 웹 기반
번역 도구를 쓸 수도 있습니다.

`".po"` 파일의 형식은 번역할 영어 문구와 그 뒤에 로컬 번역이 있는 항목 목록입니다. 영어 문구는
`msgid`로 시작하는 줄에 있고, 번역된 구문은 `msgstr`로 시작하는 줄에 있습니다.

`msgid` 줄 앞에는 해당 단어나 문구가 소스 코드에서 어디에서 왔는지를 나타내는 주석 줄이 있습니다.
원문의 의미가 명확하지 않을 때 맥락을 파악하는데 도움을 줍니다. 또한 번역을 더 쉽게 하기 위해
개발자가 남긴 주석이 있을 수도 있습니다.

대부분의 항목은 다음과 같이 표시됩니다:

```
#: action.cpp:421
msgid "Construct Terrain"
msgstr "niarreT tcurtsnoC"
```

여기서 영어 문구는 "Construct Terrain" 이고, `action.cpp` 파일의 421 번째 줄에 나와 있습니다. 이
예제는 그저 영어 문자를 뒤집은 것입니다. 이렇게 하면 "Construct Terrain" 대신 "niarreT tcurtsnoC"가
표시됩니다.

또 다른 예제로는:

```
#: action.cpp:425 defense.cpp:635 defense.cpp:701 npcmove.cpp:2049
msgid "Sleep"
msgstr "pleeS"
```

방금의 예제와 비슷하지만, 더 많은 곳에서 쓰이는 문구를 번역했습니다. 이렇게 하면 `action.cpp`,
`defense.cpp`(두 번), `npcmove.cpp` 총 네 곳에서 문구 "Sleep"이 "pleeS"로 표시됩니다.

## 파일 헤더

".po"` 파일 상단의 헤더는 주석/msgid/msgstr 형식과 다른 유일한 부분입니다.

이미 설정된 번역을 작업하는 경우에는 수정할 필요가 없습니다.

새로 번역할 경우, 사용 중인 편집기, 또는 번역을 초기화할 때 권장되는 방식인 `msginit` 프로그램을
통해서 대부분 설정이 완료되어야 합니다(TRANSLATING.md 참조).

다른 번역 파일에서 시작하는 경우에도 몇 가지 사항을 변경해야 할 수 있습니다. 가능한 한 최선을 다해
입력하세요.

헤더는 다음과 같이 표시됩니다:

```
# French translations for Cataclysm-DDA package.
# Copyright (C) 2013 CleverRaven and Cataclysm-DDA contributors.
# This file is distributed under the same license as the Cataclysm-DDA package.
# Administrator <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: 0.7-git\n"
"Report-Msgid-Bugs-To: http://github.com/CleverRaven/Cataclysm-DDA\n"
"POT-Creation-Date: 2013-08-01 13:44+0800\n"
"PO-Revision-Date: 2013-08-01 14:02+0800\n"
"Last-Translator: YOUR NAME <your@email.address>\n"
"Language-Team: French\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
```

새로 번역을 시작하거나 기존 번역을 담당하고 있는 경우, 번역과 관련된 질문이나 문제가 있을 때 연락을
받을 수 있도록 이름과 이메일 주소를 기재하면 도움이 됩니다.

수동으로 쉽게 작성할 수 없는 유일한 중요한 부분은 [`복수형 양식`](#복수형-양식) 항목입니다. 이
섹션은 귀하의 언어에서 다양한 수의 사물이 처리되는 방식을 결정합니다. 이에 대해서는 나중에 자세히
설명하겠습니다.

## 문자열 및 줄 바꿈 서식 지정

일부 문자열에는 `%s`, `%2$d``\n`과 같은 특수 용어가 있습니다.

`\n`은 줄 바꿈을 나타냅니다. 코드에서 줄 바꿈이 가능한 경우 줄을 감싸기 때문에 대부분 불필요하지만,
때로는 다른 줄에 내용을 배치할 때 사용되기도 합니다. 번역에서 새 줄이 있어야 할 곳에 `\n`을 사용하면
됩니다.

`%s` 및 기타 유사한 용어는 게임이 실행 중일 때 다른 용어로 대체됩니다. 번역에 따라 이러한 용어를
이동해야 할 수도 있습니다. 번역에서 `%`로 시작하는 모든 용어는 그대로 유지하는 것이 중요합니다.

다음은 `%d`를 숫자로 대체한 예입니다:

```
#: addiction.cpp:224
#, c-format
msgid ""
"Strength - %d; Perception - 1; Dexterity - 1;\n"
"Depression and physical pain to some degree. Frequent cravings. Vomiting."
msgstr ""
";1 - ytiretxeD ;1 - noitpecreP ;%d - htgnertS\n"
".gnitimoV .sgnivarc tneuqerF .eerged emos ot niap lacisyhp dna noisserpeD"
```

여기서 `%d`가 반전되지 않고 `\n`이 줄 끝에 남아 있는 것이 중요합니다. 이 경우 메시지가 표시될 때
`%d`는 캐릭터의 힘 ( STR ) 수정자로 대체됩니다.

경우에 따라 용어의 순서를 변경해야 할 수도 있습니다. 게임에 혼란을 줄 수 있으니까요. `%` 용어의
순서를 변경되면 모든 용어에 숫자를 추가해야 게임에서 어떤 것이 어떤 것인지 알 수 있습니다. 일부
문자열에는 이미 이러한 숫자가 있지만 그렇지 않은 문자열도 있을 수 있습니다.

예를 들어 `%s가 %s를 쐈다!`가 들어 있는 문자열이 있으면 번역할 때 바뀔 수 있습니다. 아마도
`%s가 %s에게 쏘였다!`와 같이 될 것입니다. 하지만 지금은 거꾸로, 쏘는 사람이 맞는 사람과 바뀐
것입니다.

이 경우 각 `%s`는 숫자(1~9)로 번호를 매긴 다음 `%``s` 사이에 달러 기호( `$` )를 넣어야 합니다.
예를 들어 `%1$s가 %2$s를 쐈다!``%s가 %s를 쐈다!`와 동일합니다. 따라서 위의 번역 예제는
`%2$s가 %1$s에게 쏘였다!`가 될 수 있으며, 이 번역은 올바르게 작동합니다.

게임에서 이러한 `%1$s` `%2$s` 매개변수를 자동으로 알아낼 수 있지만, (A): 번역의 모든 `%` 용어에
번호가 매겨져 있는지, (B): 영어 텍스트의 원래 순서에 따라 번호가 올바른지, 그 두 가지를 확인해야
합니다.

예를 들자면:

```
#: map.cpp:680
#, c-format
msgid "%s loses control of the %s."
msgstr "%2$s eht fo lortnoc sesol %1$s"
```

게임 내에서 `아비게일``트럭`을 운전하고 있다고 가정할 때 `kcurt eht fo lortnoc sesol liagibA`
표시됩니다.

## 문자열에 포함된 특수 태그

번역할 때 일부 문자열의 앞이나 안쪽에 특수 태그가 있을 수 있습니다. 이러한 태그는 그대로 두고 나머지
문자열만 번역해야 합니다.

예를 들어, "data/raw/names.json"의 NPC 및 도시 이름 앞에는 단어와의 충돌을 피하기 위해 `<name>`
붙습니다(예: 재료의 `Wood`, 성의 `Wood`). 이러한 경우 `<name>` 부분을 남겨 두어야 합니다.

이하는 그 예시입니다:

```
#. ~ proper name; gender=female; usage=given
#: lang/json/json_names.py:6
msgid "<name>Abigail"
msgstr "<name>liagibA"
```

또한 이름 위에는 해당 이름이 게임 내에서 어떤 용도로 사용되는지 알려주는 주석이 표시됩니다. 예시의
경우 '아비게일'은 여성 NPC의 이름으로 사용할 수 있는 이름입니다.

## 복수형 양식

많은 언어가 사물의 수에 따라 다른 용어를 사용합니다. 이러한 용어는 `".po"` 파일 헤더의 `Plural-Form`
줄에 정의된 복수형을 사용하여 지원됩니다.

이 경우 수에 따라 다른 형식을 위한 여러 개의 `msgstr` 줄이 있습니다. 게임은 개수에 따라 자동으로
올바른 형태를 선택합니다.

이하는 그 예시입니다:

```
#: melee.cpp:913
#, c-format
msgid "%d enemy hit!"
msgid_plural "%d enemies hit!"
msgstr[0] "!tih ymene %d"
msgstr[1] "!tih seimene %d"
```

여기서 첫 번째 항목은 `enemy`가 하나만 있을 때, 두 번째 항목은 `enemies`이 하나보다 더 있을 때를
나타냅니다. 이 규칙은 언어마다 크게 다릅니다.

> 역주:
>
> 한국어는 해당사항이 없습니다.
46 changes: 46 additions & 0 deletions doc/src/content/docs/ko/i18n/explanation/style.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: Language Specific Style Guide
---

:::note{title="This section is a template."}

As this page is for language-specific notes, it shouldn't be translated. Instead, it's used as a
template. [Check here for examples.](#writing-style-guide-for-your-language)

:::

## How to write one for your language

1. [Find your language code.](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
2. Create `doc/src/content/docs/{your-language-code}/i18n/explanation/style.md`.
3. If it doesn't, add your language to `doc/astro.config.ts` file, for example:

```diff
diff --git a/doc/astro.config.ts b/doc/astro.config.ts
index da91c2e0014..3dafa248a06 100644
--- a/doc/astro.config.ts
+++ b/doc/astro.config.ts
@@ -41,6 +41,7 @@ export default defineConfig({
locales: {
en: { label: "English" },
ko: { label: "한국어", lang: "ko-KR" },
+ ru: { label: "Русский", lang: "ru-RU" },
},
logo: { src: "./src/assets/icon-round.svg" },
social: { github, discord },
```

In this example, it will allow russian language to be availble in language selector. Check
[starlight](https://starlight.astro.build/guides/i18n/) for details.

## Writing style guide for your language

There's no restrictions on how or what to write in this file. For example, you could:

- write language specific notes for other translaotrs to read
- link to external resources or tools

You could check out existing style guides for reference:

- [Deutsch](../../../de/i18n/explanation/style.md)
- [Russian](../../../ru/i18n/explanation/style.md)
37 changes: 37 additions & 0 deletions doc/src/content/docs/ko/i18n/explanation/style_all.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: 영문 스타일 가이드
---

게임 내 텍스트를 추가하거나 편집할 때는 이하의 규칙을 따라주세요:

1. 미국식 영어 철자를 사용합니다.

2. 마침표 뒤에 두 문장 띄어쓰기를 사용합니다. 즉, 문장을 끝내는 마침표 뒤에 두 개의 공백이 뒤에 두
개의 공백이 와야 합니다. 문장이 텍스트 블록의 마지막 문장인 경우 그 뒤에 공백이 없어야 합니다.

3. 2인칭 시점을 사용합니다(예: "you").

4. 특성, 무술, 소형 생체공학 모듈(Compact Bionic Modules, CBM)의 이름은 제목에 대문자로 표기해야
합니다. 즉, 관사, 전치사 또는 접속사가 아닌 한 각 단어는 대문자로 표기해야 합니다.

5. 고유명사 이름의 항목과 개체도 제목에 대소문자를 사용해야 합니다.

6. 다른 모든 항목 및 개체 이름은 모두 소문자로 표기합니다.

7. 3개 이상의 대상을 나열할 때는
[연속 쉼표(옥스포드 쉼표)](https://en.wikipedia.org/wiki/Serial_comma)를 사용합니다.

:::caution{title="연속 쉼표를 사용하지 않은 예"}

A, B and C

:::

:::tip{title="연속 쉼표를 사용한 예"}

A, B, and C

:::

8. 마침표 3개(...) 대신 줄임표 문자(…)를 사용합니다. 마침표가 세 개 있는 경우 줄임표 전용 유니코드
문자, 즉 U+2026으로 대체합니다.
33 changes: 33 additions & 0 deletions doc/src/content/docs/ko/i18n/guides/maintain.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: 관리자를 위한 번역 병합 및 관리하기
---

번역 파일을 올바르게 병합하고 유지 관리하려면 몇 가지 단계를 올바른 순서로 수행해야 합니다.

이를 위해 제공되는 스크립트가 있으므로 대체로 다음과 같은 과정을 거치게 됩니다:

1. 번역을 '.po' 형식으로 다운로드합니다.
2. 번역 파일을 `lang/incoming/`에 넣고 `lang/po/`에 있는 파일과 이름이 일치하도록 합니다.
3. `lang/update_pot.sh`를 실행하여 `lang/po/cataclysm-BN.pot`을 업데이트합니다(`polib`
`luaparser` 모듈이 설치된 파이썬이 필요함).
4. `lang/merge_po.sh`를 실행하여 `lang/po/*.po`를 업데이트합니다. (로컬에서 번역을 테스트할 때만
쓰입니다. 지금은 Transifex로 프로젝트를 번역하기 때문입니다.) 이렇게 하면 `lang/incoming/`
번역도 병합됩니다.

이 단계만 거치면 번역 파일을 최신 상태로 유지할 수 있습니다.

.po 파일을 `.mo` 파일로 컴파일하여 사용하려면 `lang/compile_mo.sh`를 실행합니다. 이 명령은 발견된 각
언어에 대해 `lang/mo/`에 디렉터리를 생성합니다.

참고로 `lang/merge_po.sh``lang/compile_mo.sh` 모두 병합 또는 컴파일할 언어를 지정하는 인수를
사용할 수 있습니다. 예를 들어 중국어 번체(zh_TW)에 대한 번역만 컴파일하려면
`lang/compile_mo.sh zh_TW`를 실행하면 됩니다.

적절한 .mo 파일을 컴파일한 후, 게임 설정에서 해당 언어를 선택하면 카타클리즘을 실행할 때 해당 번역이
자동으로 사용됩니다.

설정에서 `System language`를 선택한 경우, 게임은 언어 정의 파일 `data/raw/languages.json`을 기반으로
시스템 언어와 일치하는 언어를 사용하려고 시도합니다.

새 언어에 대한 번역을 테스트 중이거나 설정에 해당 언어가 표시되지 않는 경우, 언어 정의 파일에 해당
언어에 대한 항목이 있는지 확인하세요.
Loading

0 comments on commit a2a5cd9

Please sign in to comment.