1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-02-08 03:40:53 +02:00

Cleanup Korean Translation (#458)

* s/블럭/블록

* Add missing translation for Korean

* Fix spacing in Korean

along with typos.

* Add missing msgstr in Korean

---------

Co-authored-by: Jooyung Han <jooyung@google.com>
This commit is contained in:
Jooyung Han 2023-02-27 00:42:50 +00:00 committed by GitHub
parent 4690f19e8c
commit 973e27a322
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: [한국어]Comprehensive Rust 🦀\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2023-02-25 01:10+0900\n"
"PO-Revision-Date: 2023-02-26 15:41+0000\n"
"Last-Translator: keispace <keispace.kyj@google.com>\n"
"Language-Team: \n"
"Language: ko\n"
@ -796,7 +796,7 @@ msgstr "이 4일짜리 러스트 강의는 안드로이드 팀이 만들었습
msgid ""
"The goal of the course is to teach you Rust. We assume you don't know anything\n"
"about Rust and hope to:"
msgstr "강의는 당신이 러스트에 대해서 아무것도 모른다고 가정하고 아래의 목표를가지고 있습니다:"
msgstr "강의는 당신이 러스트에 대해서 아무것도 모른다고 가정하고 아래의 목표를 가지고 있습니다:"
#: src/welcome.md:10
msgid ""
@ -827,7 +827,7 @@ msgid ""
"It is important to note that this course does not cover Android **application** \n"
"development in Rust, and that the Android-specific parts are specifically about\n"
"writing code for Android itself, the operating system. "
msgstr "이 강의에서는 러스트로 안드로이드 **플리케이션**을 개발하는 것은 다루지 않습니다. 이 강의에서 다루는 안드로이드 특화된 내용은 안드로이드 OS의 일부를 러스트로개발하는 것에 대한 것입니다. "
msgstr "이 강의에서는 러스트로 안드로이드 **플리케이션**을 개발하는 것은 다루지 않습니다. 이 강의에서 다루는 안드로이드 특화된 내용은 안드로이드 OS의 일부를 러스트로 개발하는 것에 대한 것입니다. "
#: src/welcome.md:24
msgid "## Non-Goals"
@ -837,7 +837,7 @@ msgstr "## 제외사항"
msgid ""
"Rust is a large language and we won't be able to cover all of it in a few days.\n"
"Some non-goals of this course are:"
msgstr "러스트는 몇일만에 모든 것을 다루기에는 너무 큰 언어입니다. 그래서 아래와 같은것을 목표로 하지 않습니다:"
msgstr "러스트는 며칠만에 모든 것을 다루기에는 너무 큰 언어입니다. 그래서 아래와 같은것을 목표로 하지 않습니다:"
#: src/welcome.md:29
msgid ""
@ -849,7 +849,7 @@ msgid ""
" Book](https://doc.rust-lang.org/book/ch19-06-macros.html) and [Rust by\n"
" Example](https://doc.rust-lang.org/rust-by-example/macros.html) instead."
msgstr ""
"* 비동기적 러스트 사용법 --- 간단하게 언급정도는 하겠지만 좀 더 자세한 내용은 [Asynchronous Programming in Rust](https://rust-lang.github.io/async-book/)를 참조해주세요.\n"
"* 비동기적 러스트 사용법. 간단하게 언급정도는 하겠지만 좀 더 자세한 내용은 [Asynchronous Programming in Rust](https://rust-lang.github.io/async-book/)를 참조해주세요.\n"
"* 매크로를 개발하는 방법. [Chapter 19.5 in the Rust Book](https://doc.rust-lang.org/book/ch19-06-macros.html)와 [Rust by Example](https://doc.rust-lang.org/rust-by-example/macros.html)를 참조하세요."
#: src/welcome.md:37
@ -927,7 +927,7 @@ msgid ""
"This is an example of a _speaker note_. We will use these to add additional\n"
"information to the slides. This could be key points which the instructor should\n"
"cover as well as answers to typical questions which come up in class."
msgstr "이것은 _발표자 노트_의 예제입니다. 이 부분을 이용해서 추가 정보를 제공합니다. 주로 강의실에서 제기되는 일반적인 질문에 대한 답변과 강사가 다루어야 할 키 포인트일 수 있습니다."
msgstr "이것은 \"발표자 노트\"의 예제입니다. 이 부분을 이용해서 추가 정보를 제공합니다. 주로 강의실에서 제기되는 일반적인 질문에 대한 답변과 강사가 다루어야 할 키 포인트일 수 있습니다."
#: src/welcome.md:52 src/cargo/rust-ecosystem.md:67
#: src/cargo/code-samples.md:35 src/cargo/running-locally.md:74
@ -1136,7 +1136,7 @@ msgstr ""
"* <kbd>왼쪽 화살표</kbd>: 이전 페이지로 이동합니다.\n"
"* <kbd>오른쪽 화살표</kbd>: 다음 페이지로 이동합니다.\n"
"* <kbd>Ctrl + Enter</kbd>: 현재 포커스를 받은 코드 샘플 블록을 실행합니다.\n"
"* <kbd>s</kbd>: 검색창을 활성화합니다.(mdbook 문제로 23.01.19 기준 영어로만 가능합니다.)"
"* <kbd>s</kbd>: 검색창을 활성화합니다.(mdBook 문제로 23.01.19 기준 영어로만 가능합니다.)"
#: src/running-the-course/translations.md:1
msgid "# Translations"
@ -4158,7 +4158,7 @@ msgstr ""
"* 위 코드 컴파일 되지 않습니다. 왜냐하면 `c`는 `a`를 가변 변수로 빌렸고, 이와 동시에 `b`는 `a`를 불변 변수로 빌렸기 때문입니다.\n"
"* `b`에 대한 `println!` 구분을 `c`가 있는 스코프 앞으로 이동하면 컴파일이 됩니다.\n"
"* 이렇게 바꾸면, 컴파일러는 `c`가 `a`를 가변 변수로 빌리기 전에만 `b`가 사용된다는 것을 확인할 수 있습니다. 빌림 검사기의 이러한 기능을 \"non-lexical lifetime\" 이라고 합니다.\n"
" * 단순히 스코프만 보면 `b`의 수명은 `main`함수의 전체라고 생각할 수 있습니다. 때문에 `c`의 블 안에서는 `a`에 대한 가변 빌림과 불변 빌림이 동시에 존재하는 것 처럼 보이며, 이는 위 제약 조건을 위반하는 것으로 생각할 수 있습니다. 그러나 컴파일러는 `b`가 `c`블럭이 시작되기 전에만 사용된다는 점을 적극 활용해서 `b`의 수명을 `c`블럭의 시작 전 까지로 줄입니다. 그러면 `b`와 `c`의 수명은 겹치지 않고, 따라서 제약 조건을 위반하지 않습니다."
" * 단순히 스코프만 보면 `b`의 수명은 `main`함수의 전체라고 생각할 수 있습니다. 때문에 `c`의 블 안에서는 `a`에 대한 가변 빌림과 불변 빌림이 동시에 존재하는 것 처럼 보이며, 이는 위 제약 조건을 위반하는 것으로 생각할 수 있습니다. 그러나 컴파일러는 `b`가 `c`블록이 시작되기 전에만 사용된다는 점을 적극 활용해서 `b`의 수명을 `c`블록의 시작 전 까지로 줄입니다. 그러면 `b`와 `c`의 수명은 겹치지 않고, 따라서 제약 조건을 위반하지 않습니다."
#: src/ownership/lifetimes.md:1
msgid "# Lifetimes"
@ -5526,7 +5526,7 @@ msgstr "# 패턴 매칭"
msgid ""
"The `match` keyword let you match a value against one or more _patterns_. The\n"
"comparisons are done from top to bottom and the first match wins."
msgstr "`match`키워드는 값을 여러 형태의 _패턴_과 매치시킬 수 있습니다. 맨 위 패턴부터 하나씩 매치되는지 검사하며, 처음으로 매치되는 패턴이 선택됩니다."
msgstr "`match`키워드는 값을 여러 형태의 패턴과 매치시킬 수 있습니다. 맨 위 패턴부터 하나씩 매치되는지 검사하며, 처음으로 매치되는 패턴이 선택됩니다."
#: src/pattern-matching.md:6
msgid "The patterns can be simple values, similarly to `switch` in C and C++:"
@ -6437,6 +6437,10 @@ msgid ""
" \n"
"</details>"
msgstr ""
"* `while let`은 값이 패턴에 매치되는 동안 계속됩니다.\n"
"* `while let` 루프 대신 무한 루프를 사용하고 `iter.next()`가 빈 값을 반환할 때 루프를 빠져나오도록 작성할수도 있습니다. `while let`은 그러한 경우를 위한 문법적 편의를 제공합니다.\n"
" \n"
"</details>"
#: src/control-flow/for-expressions.md:1
msgid "# `for` expressions"
@ -6524,6 +6528,9 @@ msgid ""
" \n"
"* Break the `loop` with a value (e.g. `break 8`) and print it out."
msgstr ""
"<details>\n"
" \n"
"* `loop` 블록을 빠져나올 때 `break 8`처럼 값을 지정하고 그걸 출력해보세요."
#: src/control-flow/match-expressions.md:1
msgid "# `match` expressions"
@ -6550,6 +6557,18 @@ msgid ""
"}\n"
"```"
msgstr ""
"```rust,editable\n"
"fn main() {\n"
" match std::env::args().next().as_deref() {\n"
" Some(\"cat\") => println!(\"Will do cat things\"),\n"
" Some(\"ls\") => println!(\"Will ls some files\"),\n"
" Some(\"mv\") => println!(\"Let's move some files\"),\n"
" Some(\"rm\") => println!(\"Uh, dangerous!\"),\n"
" None => println!(\"Hmm, no program name?\"),\n"
" _ => println!(\"Unknown program name!\"),\n"
" }\n"
"}\n"
"```"
#: src/control-flow/match-expressions.md:19
msgid ""
@ -6566,6 +6585,12 @@ msgid ""
" * We can now use pattern matching to match against the `&str` inside `Option`.\n"
"</details>"
msgstr ""
"* `match` 표현식을 변수에 할당하고 그 값을 출력해보세요.\n"
"* `.as_deref()`를 지워보고, 이 때 나오는 에러를 설명해주세요.\n"
" * `std::env::args().next()`는 `Option<String>` 값을 반환하는데, `String`은 직접 매치할 수 없습니다.\n"
" * `as_deref()`는 `Option<T>`를 `Option<&T::Target>`으로 바꿔줍니다. 이 경우는 `Option<String>`에서 `Option<&str>`로 바뀝니다.\n"
" * 이제는 패턴 매칭으로 `Option` 안의 `&str`을 매치할 수 있습니다.\n"
"</details>"
#: src/control-flow/break-continue.md:1
msgid "# `break` and `continue`"
@ -6598,6 +6623,23 @@ msgid ""
"}\n"
"```"
msgstr ""
"```rust,editable\n"
"fn main() {\n"
" let v = vec![10, 20, 30];\n"
" let mut iter = v.into_iter();\n"
" 'outer: while let Some(x) = iter.next() {\n"
" println!(\"x: {x}\");\n"
" let mut i = 0;\n"
" while i < x {\n"
" println!(\"x: {x}, i: {i}\");\n"
" i += 1;\n"
" if i == 3 {\n"
" break 'outer;\n"
" }\n"
" }\n"
" }\n"
"}\n"
"```"
#: src/control-flow/break-continue.md:25
msgid "In this case we break the outer loop after 3 iterations of the inner loop."
@ -6762,6 +6804,15 @@ msgid ""
"* `String` is implemented as a wrapper around a vector of bytes, many of the operations you see supported on vectors are also supported on `String`, but with some extra guarantees.\n"
"* Compare the different ways to inde a Strings by using `s3[i]` and `s3.chars.nth(i).unwrap()` where `i` is in-bound, out-of-bounds, and \"on\" the flag unicode character."
msgstr ""
"* `String::new`는 새로운 빈 문자열을 반환합니다. `String::with_capacity`는 새로 만들 문자열 버퍼에 넣을 데이터 크기를 알고 있는 경우에 사용할 수 있습니다.\n"
"* `String::len`은 `String`의 바이트 크기를 반환합니다. (실제 문자 개수와는 다를 수 있습니다.)\n"
"* `String::chars`는 실제 문자(character)들에 대한 이터레이터를 반환합니다. `char`로 표현되는 문자는 우리가 실제로 인식하고 사용하는 문자와는 다를 수 있습니다. 자소 결합으로 문자를 표현하는 경우가 있기 때문입니다. 이에 대해서는 [Grapheme Cluster](https://docs.rs/unicode-segmentation/latest/unicode_segmentation/struct.Graphemes.html)를 참고하세요.\n"
"* 문자열이라고 언급하는 경우는 `&str`이거나 `String`일 수 있습니다.\n"
"* 어떤 타입이 `Deref<Target = T>`를 구현하고 있으면, 컴파일러는 여러분이 `T`의 메소드들을 호출할 수 있게 도와줍니다.\n"
" * `String`은 `Deref<Target = str>`을 구현하고 있기 때문에 `String`에 대해서도 `str` 메소드들을 호출할 수 있습니다.\n"
" * `let s3 = s1.deref();`와 `let s3 = &*s1;`을 비교해보세요.\n"
"* `String`은 바이트 벡터의 래퍼로 구현되어 있습니다. 벡터가 지원하는 여러가지 연산들을 `String`도 지원합니다. 다만 `String`은 몇가지 보장 내용이 더 있습니다.\n"
"* Compare the different ways to inde a Strings by using `s3[i]` and `s3.chars.nth(i).unwrap()` where `i` is in-bound, out-of-bounds, and \"on\" the flag unicode character."
#: src/std/vec.md:1
msgid "# `Vec`"