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:
parent
4690f19e8c
commit
973e27a322
69
po/ko.po
69
po/ko.po
@ -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`"
|
||||
|
Loading…
x
Reference in New Issue
Block a user