From 087b3929341ce8d6e97996fee62c0cc2994ec0da Mon Sep 17 00:00:00 2001 From: Henri F Date: Thu, 22 Feb 2024 15:21:12 -0800 Subject: [PATCH] ko: cr2 Concurrency translations (#1659) #262 #1463 *Stats* Before: 1297 translated messages, 383 fuzzy translations, 1780 untranslated messages. After: 1493 translated messages, 454 fuzzy translations, 1513 untranslated messages. **Note** You can ignore _fuzzy_ translations from sections other than Concurrency. --------- Signed-off-by: dependabot[bot] Co-authored-by: Andriy Redko Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Martin Geisler --- po/ko.po | 525 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 416 insertions(+), 109 deletions(-) diff --git a/po/ko.po b/po/ko.po index 5e58f8121663..fba306ea301d 100644 --- a/po/ko.po +++ b/po/ko.po @@ -18982,11 +18982,11 @@ msgstr "러스트의 스레드는 다른 언어의 스레드와 유사하게 동 #: src/concurrency/threads.md:12 msgid "\"Count in thread: {i}!\"" -msgstr "" +msgstr "\"스레드의 개수: {i}!\"" #: src/concurrency/threads.md:18 msgid "\"Main thread: {i}\"" -msgstr "" +msgstr "\"기본 스레드: {i}\"" #: src/concurrency/threads.md:24 msgid "Threads are all daemon threads, the main thread does not wait for them." @@ -19078,7 +19078,7 @@ msgstr "" #: src/concurrency/channels.md:15 src/concurrency/channels.md:16 #: src/concurrency/channels.md:20 msgid "\"Received: {:?}\"" -msgstr "" +msgstr "\"수신됨: {:?}\"" #: src/concurrency/channels.md:26 msgid "" @@ -19105,22 +19105,22 @@ msgstr "`mpsc::channel()` 함수는 경계가 없는 비동기 채널을 생성 #: src/concurrency/channels/unbounded.md:16 #: src/concurrency/channels/bounded.md:16 msgid "\"Message {i}\"" -msgstr "" +msgstr "\"메시지 {i}\"" #: src/concurrency/channels/unbounded.md:17 #: src/concurrency/channels/bounded.md:17 msgid "\"{thread_id:?}: sent Message {i}\"" -msgstr "" +msgstr "\"{thread_id:?}: 보낸 메시지 {i}\"" #: src/concurrency/channels/unbounded.md:19 #: src/concurrency/channels/bounded.md:19 msgid "\"{thread_id:?}: done\"" -msgstr "" +msgstr "\"{thread_id:?}: 완료\"" #: src/concurrency/channels/unbounded.md:24 #: src/concurrency/channels/bounded.md:24 msgid "\"Main: got {msg}\"" -msgstr "" +msgstr "\"기본: {msg} 받음\"" #: src/concurrency/channels/bounded.md:3 #, fuzzy @@ -19134,18 +19134,25 @@ msgid "" "channel for the new message. The thread can be blocked indefinitely if there " "is nobody who reads from the channel." msgstr "" +"`send`를 호출하면 채널에 새 메시지를 위한 공간이 확보될 때까지 현재 스레드가 " +"차단됩니다. 채널에서 읽는 사람이 없는 경우 스레드가 무기한 차단될 수 있습니" +"다." #: src/concurrency/channels/bounded.md:34 msgid "" "A call to `send` will abort with an error (that is why it returns `Result`) " "if the channel is closed. A channel is closed when the receiver is dropped." msgstr "" +"`send` 호출은 오류와 함께 중단됩니다. 따라서 채널이 닫히면 `Result`를 반환합" +"니다. 수신자를 삭제하면 채널이 닫힙니다." #: src/concurrency/channels/bounded.md:36 msgid "" "A bounded channel with a size of zero is called a \"rendezvous channel\". " "Every send will block the current thread until another thread calls `read`." msgstr "" +"크기가 0인 제한된 채널을 'rendezvous 채널'이라고 합니다. 모든 전송은 다른 스" +"레드가 `read`를 호출할 때까지 현재 스레드를 차단합니다." #: src/concurrency/send-sync.md:3 #, fuzzy @@ -19411,13 +19418,13 @@ msgstr "" #: src/concurrency/shared_state/arc.md:16 msgid "\"{thread_id:?}: {v:?}\"" -msgstr "" +msgstr "\"{thread_id:?}: {v:?}\"" #: src/concurrency/shared_state/arc.md:21 #: src/concurrency/shared_state/example.md:17 #: src/concurrency/shared_state/example.md:45 msgid "\"v: {v:?}\"" -msgstr "" +msgstr "\"v: {v:?}\"" #: src/concurrency/shared_state/arc.md:29 #, fuzzy @@ -19473,7 +19480,7 @@ msgstr "" #: src/concurrency/shared_state/mutex.md:11 #: src/concurrency/shared_state/mutex.md:18 msgid "\"v: {:?}\"" -msgstr "" +msgstr "\"v: {:?}\"" #: src/concurrency/shared_state/mutex.md:22 msgid "" @@ -19553,7 +19560,7 @@ msgstr "`Arc`와 `Mutex`의 동작을 살펴봅시다:" #: src/concurrency/shared_state/example.md:6 msgid "// use std::sync::{Arc, Mutex};\n" -msgstr "" +msgstr "// std::sync::{Arc, Mutex}; 사용\n" #: src/concurrency/shared_state/example.md:23 msgid "Possible solution:" @@ -19650,26 +19657,29 @@ msgid "" " // right_fork: ...\n" " // thoughts: ...\n" msgstr "" +"// left_fork: ...\n" +" // right_fork: ...\n" +" // thoughts: ...\n" #: src/exercises/concurrency/dining-philosophers.md:36 #: src/exercises/concurrency/solutions-morning.md:24 #: src/exercises/concurrency/dining-philosophers-async.md:31 #: src/exercises/concurrency/solutions-afternoon.md:25 msgid "\"Eureka! {} has a new idea!\"" -msgstr "" +msgstr "\"유레카! {}에 새로운 아이디어가 있습니다.\"" #: src/exercises/concurrency/dining-philosophers.md:41 #: src/exercises/concurrency/dining-philosophers-async.md:37 #: src/exercises/concurrency/solutions-afternoon.md:31 msgid "// Pick up forks...\n" -msgstr "" +msgstr "// 포크를 드세요...\n" #: src/exercises/concurrency/dining-philosophers.md:42 #: src/exercises/concurrency/solutions-morning.md:33 #: src/exercises/concurrency/dining-philosophers-async.md:38 #: src/exercises/concurrency/solutions-afternoon.md:38 msgid "\"{} is eating...\"" -msgstr "" +msgstr "\"{}님이 먹고 있습니다...\"" #: src/exercises/concurrency/dining-philosophers.md:48 #: src/exercises/concurrency/solutions-morning.md:39 @@ -19684,54 +19694,54 @@ msgstr "HAL 크레이트들" #: src/exercises/concurrency/dining-philosophers-async.md:44 #: src/exercises/concurrency/solutions-afternoon.md:46 msgid "\"Hypatia\"" -msgstr "" +msgstr "\"히파티아\"" #: src/exercises/concurrency/dining-philosophers.md:48 #: src/exercises/concurrency/solutions-morning.md:39 #: src/exercises/concurrency/dining-philosophers-async.md:44 #: src/exercises/concurrency/solutions-afternoon.md:46 msgid "\"Plato\"" -msgstr "" +msgstr "\"플라톤\"" #: src/exercises/concurrency/dining-philosophers.md:48 #: src/exercises/concurrency/solutions-morning.md:39 #: src/exercises/concurrency/dining-philosophers-async.md:44 #: src/exercises/concurrency/solutions-afternoon.md:46 msgid "\"Aristotle\"" -msgstr "" +msgstr "\"아리스토텔레스\"" #: src/exercises/concurrency/dining-philosophers.md:48 #: src/exercises/concurrency/solutions-morning.md:39 #: src/exercises/concurrency/dining-philosophers-async.md:44 #: src/exercises/concurrency/solutions-afternoon.md:46 msgid "\"Pythagoras\"" -msgstr "" +msgstr "\"피타고라스\"" #: src/exercises/concurrency/dining-philosophers.md:51 #: src/exercises/concurrency/dining-philosophers-async.md:48 #: src/exercises/concurrency/solutions-afternoon.md:50 msgid "// Create forks\n" -msgstr "" +msgstr "// 포크 만들기\n" #: src/exercises/concurrency/dining-philosophers.md:53 #: src/exercises/concurrency/dining-philosophers-async.md:50 #: src/exercises/concurrency/solutions-afternoon.md:54 msgid "// Create philosophers\n" -msgstr "" +msgstr "// 철학자 만들기\n" #: src/exercises/concurrency/dining-philosophers.md:55 msgid "// Make each of them think and eat 100 times\n" -msgstr "" +msgstr "// 각각 100번 생각하고 먹도록 합니다.\n" #: src/exercises/concurrency/dining-philosophers.md:57 #: src/exercises/concurrency/dining-philosophers-async.md:54 #: src/exercises/concurrency/solutions-afternoon.md:88 msgid "// Output their thoughts\n" -msgstr "" +msgstr "// 생각을 출력합니다.\n" #: src/exercises/concurrency/dining-philosophers.md:61 msgid "You can use the following `Cargo.toml`:" -msgstr "" +msgstr "다음과 같은 `Cargo.toml`을 사용할 수 있습니다." #: src/exercises/concurrency/dining-philosophers.md:65 msgid "" @@ -19742,6 +19752,12 @@ msgid "" "edition = \"2021\"\n" "```" msgstr "" +"```toml\n" +"[package]\n" +"name = \"dining-philosophers\"\n" +"version = \"0.1.0\"\n" +"edition = \"2021\"\n" +"```" #: src/exercises/concurrency/link-checker.md:3 msgid "" @@ -19806,6 +19822,19 @@ msgid "" "thiserror = \"1.0.37\"\n" "```" msgstr "" +"```toml\n" +"[package]\n" +"name = \"link-checker\"\n" +"version = \"0.1.0\"\n" +"edition = \"2021\"\n" +"publish = false\n" +"\n" +"[dependencies]\n" +"reqwest = { version = \"0.11.12\", features = [\"blocking\", \"rustls-" +"tls\"] }\n" +"scraper = \"0.13.0\"\n" +"thiserror = \"1.0.37\"\n" +"```" #: src/exercises/concurrency/link-checker.md:50 msgid "" @@ -19820,40 +19849,40 @@ msgstr "`rc/main.rs`파일은 아래와 같습니다:" #: src/exercises/concurrency/link-checker.md:65 #: src/exercises/concurrency/solutions-morning.md:97 msgid "\"request error: {0}\"" -msgstr "" +msgstr "\"요청 오류: {0}\"" #: src/exercises/concurrency/link-checker.md:67 #: src/exercises/concurrency/solutions-morning.md:99 msgid "\"bad http response: {0}\"" -msgstr "" +msgstr "\"잘못된 http 응답: {0}\"" #: src/exercises/concurrency/link-checker.md:78 #: src/exercises/concurrency/solutions-morning.md:110 msgid "\"Checking {:#}\"" -msgstr "" +msgstr "\"{:#} 확인 중\"" #: src/exercises/concurrency/link-checker.md:96 #: src/exercises/concurrency/solutions-morning.md:128 msgid "\"href\"" -msgstr "" +msgstr "\"href\"" #: src/exercises/concurrency/link-checker.md:103 #: src/exercises/concurrency/solutions-morning.md:135 msgid "\"On {base_url:#}: ignored unparsable {href:?}: {err}\"" -msgstr "" +msgstr "\"{base_url:#}에서: 파싱할 수 없는 {href:?}: {err}을(를) 무시함\"" #: src/exercises/concurrency/link-checker.md:112 #: src/exercises/concurrency/solutions-morning.md:245 msgid "\"https://www.google.org\"" -msgstr "" +msgstr "\"https://www.google.org\"" #: src/exercises/concurrency/link-checker.md:115 msgid "\"Links: {links:#?}\"" -msgstr "" +msgstr "\"링크: {links:#?}\"" #: src/exercises/concurrency/link-checker.md:116 msgid "\"Could not extract links: {err:#}\"" -msgstr "" +msgstr "\"링크를 추출할 수 없습니다: {err:#}\"" #: src/exercises/concurrency/link-checker.md:121 msgid "Run the code in `src/main.rs` with" @@ -19883,11 +19912,11 @@ msgstr "3일차 오전 연습문제" #: src/exercises/concurrency/solutions-morning.md:5 msgid "([back to exercise](dining-philosophers.md))" -msgstr "" +msgstr "([연습문제로 돌아가기](dining-philosophers.md)" #: src/exercises/concurrency/solutions-morning.md:29 msgid "\"{} is trying to eat\"" -msgstr "" +msgstr "\"{}님이 식사를 하려고 합니다.\"" #: src/exercises/concurrency/solutions-morning.md:53 msgid "" @@ -19895,10 +19924,14 @@ msgid "" " // somewhere. This will swap the forks without deinitializing\n" " // either of them.\n" msgstr "" +"// 교착 상태를 방지하려면 어딘가에서\n" +" // 대칭을 중단시켜야 합니다. 이렇게 하면 둘 중 어느 하나라도 초기화하" +"지 않고\n" +" // 포크가 교체됩니다.\n" #: src/exercises/concurrency/solutions-morning.md:77 msgid "\"{thought}\"" -msgstr "" +msgstr "\"{thought}\"" #: src/exercises/concurrency/solutions-morning.md:82 #, fuzzy @@ -19907,30 +19940,32 @@ msgstr "멀티스레드 링크 검사기" #: src/exercises/concurrency/solutions-morning.md:84 msgid "([back to exercise](link-checker.md))" -msgstr "" +msgstr "([연습문제로 돌아가기](link-checker.md))" #: src/exercises/concurrency/solutions-morning.md:154 msgid "" "/// Determine whether links within the given page should be extracted.\n" -msgstr "" +msgstr "/// 주어진 페이지 내의 링크를 추출해야 하는지 여부를 결정합니다.\n" #: src/exercises/concurrency/solutions-morning.md:162 msgid "" "/// Mark the given page as visited, returning false if it had already\n" " /// been visited.\n" msgstr "" +"/// 지정된 페이지를 방문한 것으로 표시하고 이미 방문한 경우\n" +" /// false를 반환합니다.\n" #: src/exercises/concurrency/solutions-morning.md:188 msgid "// The sender got dropped. No more commands coming in.\n" -msgstr "" +msgstr "// 발신자가 삭제되었습니다. 더 이상 명령어가 수신되지 않습니다.\n" #: src/exercises/concurrency/solutions-morning.md:229 msgid "\"Got crawling error: {:#}\"" -msgstr "" +msgstr "\"크롤링 오류 발생: {:#}\"" #: src/exercises/concurrency/solutions-morning.md:247 msgid "\"Bad URLs: {:#?}\"" -msgstr "" +msgstr "\"잘못된 URL: {:#?}\"" #: src/async.md:1 #, fuzzy @@ -20000,7 +20035,7 @@ msgstr "" #: src/async/async-await.md:10 msgid "\"Count is: {i}!\"" -msgstr "" +msgstr "\"수: {i}개!\"" #: src/async/async-await.md:27 msgid "" @@ -20126,7 +20161,7 @@ msgid "" "that future remain valid. This is required to allow references to remain " "valid after an `.await`." msgstr "" -"'Pin'을 사용하면 메모리에서 Future의 위치가 고정되기 때문에 해당 future의 포" +"`Pin`을 사용하면 메모리에서 Future의 위치가 고정되기 때문에 해당 future의 포" "인터가 항상 유효하게 유지됩니다. 이는 `.await` 후에 참조를 유효한 상태로 유지" "하기 위해 필요합니다." @@ -20215,11 +20250,11 @@ msgstr "대규모 라이브러리 생태계" #: src/async/runtimes/tokio.md:14 msgid "\"Count in task: {i}!\"" -msgstr "" +msgstr "\"작업 개수: {i}개!\"" #: src/async/runtimes/tokio.md:24 msgid "\"Main task: {i}\"" -msgstr "" +msgstr "\"기본 작업: {i}\"" #: src/async/runtimes/tokio.md:32 msgid "With the `tokio::main` macro we can now make `main` async." @@ -20279,27 +20314,27 @@ msgstr "" #: src/async/tasks.md:16 msgid "\"127.0.0.1:0\"" -msgstr "" +msgstr "\"127.0.0.1:0\"" #: src/async/tasks.md:17 msgid "\"listening on port {}\"" -msgstr "" +msgstr "\"포트 {}에서 수신 대기\"" #: src/async/tasks.md:22 msgid "\"connection from {addr:?}\"" -msgstr "" +msgstr "\"{addr:?}에서 연결\"" #: src/async/tasks.md:25 msgid "b\"Who are you?\\n\"" -msgstr "" +msgstr "b\"누구세요?\\n\"" #: src/async/tasks.md:25 src/async/tasks.md:28 src/async/tasks.md:31 msgid "\"socket error\"" -msgstr "" +msgstr "\"소켓 오류\"" #: src/async/tasks.md:30 msgid "\"Thanks for dialing in, {name}!\\n\"" -msgstr "" +msgstr "\"{name}님, 전화해 주셔서 감사합니다.\\n\"" #: src/async/tasks.md:39 src/async/control-flow/join.md:36 msgid "" @@ -20314,6 +20349,9 @@ msgid "" "com/man-page/linux/1/nc/) or [telnet](https://www.unix.com/man-page/linux/1/" "telnet/)." msgstr "" +"[nc](https://www.unix.com/man-page/linux/1/nc/) 또는 [telnet](https://www." +"unix.com/man-page/linux/1/telnet/)과 같은 TCP 연결 도구를 사용하여 연결해 보" +"세요." #: src/async/tasks.md:45 msgid "" @@ -20350,23 +20388,23 @@ msgstr "" #: src/async/channels.md:13 msgid "\"Received {count} pings so far.\"" -msgstr "" +msgstr "\"지금까지 핑 {count}개를 받았습니다.\"" #: src/async/channels.md:16 msgid "\"ping_handler complete\"" -msgstr "" +msgstr "\"ping_handler 완료\"" #: src/async/channels.md:24 msgid "\"Failed to send ping.\"" -msgstr "" +msgstr "\"핑을 보내지 못했습니다.\"" #: src/async/channels.md:25 msgid "\"Sent {} pings so far.\"" -msgstr "" +msgstr "\"지금까지 핑 {}개를 전송했습니다.\"" #: src/async/channels.md:29 msgid "\"Something went wrong in ping handler task.\"" -msgstr "" +msgstr "\"핑 핸들러 작업에 문제가 발생했습니다.\"" #: src/async/channels.md:35 msgid "Change the channel size to `3` and see how it affects the execution." @@ -20440,19 +20478,19 @@ msgstr "" #: src/async/control-flow/join.md:21 msgid "\"https://google.com\"" -msgstr "" +msgstr "\"https://google.com\"" #: src/async/control-flow/join.md:22 msgid "\"https://httpbin.org/ip\"" -msgstr "" +msgstr "\"https://httpbin.org/ip\"" #: src/async/control-flow/join.md:23 msgid "\"https://play.rust-lang.org/\"" -msgstr "" +msgstr "\"https://play.rust-lang.org/\"" #: src/async/control-flow/join.md:24 msgid "\"BAD_URL\"" -msgstr "" +msgstr "\"BAD_URL\"" #: src/async/control-flow/join.md:38 msgid "" @@ -20463,7 +20501,7 @@ msgstr "" "서로 다른 타입을 가지는 여러 여러 futures들을 join하고자 할 경우 `std::" "future::join!`을 사용할 수 있습니다. 이 매크로를 사용하려면 futures가 몇 개" "나 있을지 컴파일 할 때 알아야 한다는 점을 주의하세요. 이 매크로는 지금은 " -"'futures' 크레이트에 있으며 곧 안정화 되어 `std::future`에 포함될 예정입니다." +"`futures` 크레이트에 있으며 곧 안정화 되어 `std::future`에 포함될 예정입니다." #: src/async/control-flow/join.md:42 #, fuzzy @@ -20471,7 +20509,7 @@ msgid "" "The risk of `join` is that one of the futures may never resolve, this would " "cause your program to stall." msgstr "" -"'join'의 위험성은 futures들 중 하나가 영영 끝나지 않을 수도 있다는 것입니다. " +"`join`의 위험성은 futures들 중 하나가 영영 끝나지 않을 수도 있다는 것입니다. " "그러면 프로그램이 더이상 진행을 못하고 멈춰있을(stall) 수 있습니다. " #: src/async/control-flow/join.md:45 @@ -20516,27 +20554,27 @@ msgstr "" #: src/async/control-flow/select.md:39 msgid "\"Felix\"" -msgstr "" +msgstr "\"펠릭스\"" #: src/async/control-flow/select.md:39 msgid "\"Failed to send cat.\"" -msgstr "" +msgstr "\"고양이를 보내지 못했습니다.\"" #: src/async/control-flow/select.md:43 msgid "\"Rex\"" -msgstr "" +msgstr "\"렉스\"" #: src/async/control-flow/select.md:43 msgid "\"Failed to send dog.\"" -msgstr "" +msgstr "\"개를 보내지 못했습니다.\"" #: src/async/control-flow/select.md:48 msgid "\"Failed to receive winner\"" -msgstr "" +msgstr "\"우승자를 수신하지 못했습니다.\"" #: src/async/control-flow/select.md:50 msgid "\"Winner is {winner:?}\"" -msgstr "" +msgstr "\"우승자: {winner:?}\"" #: src/async/control-flow/select.md:56 #, fuzzy @@ -20587,6 +20625,8 @@ msgid "" "An alternative is to pass `&mut future` instead of the future itself, but " "this can lead to issues, further discussed in the pinning slide." msgstr "" +"대안은 future 자체 대신 `&mut future`를 전달하는 것입니다. 하지만 이렇게 하" +"면 문제가 발생할 수 있습니다(Pinning을 다룰 때 자세히 설명할 예정임)." #: src/async/pitfalls.md:1 msgid "Pitfalls of async/await" @@ -20604,23 +20644,20 @@ msgstr "" "지 예를 살펴보겠습니다." #: src/async/pitfalls.md:7 -#, fuzzy msgid "[Blocking the Executor](pitfalls/blocking-executor.md)" msgstr "[실행자 차단](pitfalls/blocking-executor.md)" #: src/async/pitfalls.md:8 -#, fuzzy msgid "[Pin](pitfalls/pin.md)" -msgstr "[고정](pitfalls/pin.md)" +msgstr "[Pin](pitfalls/pin.md)" #: src/async/pitfalls.md:9 -#, fuzzy msgid "[Async Traits](pitfalls/async-traits.md)" msgstr "[비동기 트레잇](pitfall/async-traits.md)" #: src/async/pitfalls.md:10 msgid "[Cancellation](pitfalls/cancellation.md)" -msgstr "" +msgstr "[취소](pitfalls/cancellation.md)" #: src/async/pitfalls/blocking-executor.md:1 msgid "Blocking the executor" @@ -20641,10 +20678,12 @@ msgstr "" #: src/async/pitfalls/blocking-executor.md:14 msgid "\"future {id} slept for {duration_ms}ms, finished after {}ms\"" msgstr "" +"\"future {id}은(는) {duration_ms}밀리초 동안 절전 모드였고 {}밀리초 후에 완료" +"됨\"" #: src/async/pitfalls/blocking-executor.md:19 msgid "\"current_thread\"" -msgstr "" +msgstr "\"current_thread\"" #: src/async/pitfalls/blocking-executor.md:29 msgid "" @@ -20732,38 +20771,40 @@ msgid "" "// A work item. In this case, just sleep for the given time and respond\n" "// with a message on the `respond_on` channel.\n" msgstr "" +"// 작업 항목. 이 경우 지정된 시간 동안 절전 모드이고\n" +"// `respond_on` 채널의 메시지로 응답합니다.\n" #: src/async/pitfalls/pin.md:24 msgid "// A worker which listens for work on a queue and performs it.\n" -msgstr "" +msgstr "// 큐에서 작업을 수신 대기하고 실행하는 worker입니다.\n" #: src/async/pitfalls/pin.md:31 msgid "// Pretend to work.\n" -msgstr "" +msgstr "// 작업하는 척합니다.\n" #: src/async/pitfalls/pin.md:34 msgid "\"failed to send response\"" -msgstr "" +msgstr "\"응답을 보내지 못했습니다.\"" #: src/async/pitfalls/pin.md:37 msgid "// TODO: report number of iterations every 100ms\n" -msgstr "" +msgstr "// TODO: 100밀리초마다 반복 횟수를 보고합니다.\n" #: src/async/pitfalls/pin.md:41 msgid "// A requester which requests work and waits for it to complete.\n" -msgstr "" +msgstr "// 작업을 요청하고 작업이 완료되기를 기다리는 요청자입니다.\n" #: src/async/pitfalls/pin.md:48 msgid "\"failed to send on work queue\"" -msgstr "" +msgstr "\"작업 큐에서 전송하지 못했습니다.\"" #: src/async/pitfalls/pin.md:49 msgid "\"failed waiting for response\"" -msgstr "" +msgstr "\"응답 대기 실패\"" #: src/async/pitfalls/pin.md:58 msgid "\"work result for iteration {i}: {resp}\"" -msgstr "" +msgstr "\"반복 작업 결과 {i}: {resp}\"" #: src/async/pitfalls/pin.md:65 msgid "" @@ -20851,11 +20892,11 @@ msgstr "" #: src/async/pitfalls/async-traits.md:35 msgid "\"running all sleepers..\"" -msgstr "" +msgstr "\"모든 수면자를 실행\"" #: src/async/pitfalls/async-traits.md:39 msgid "\"slept for {}ms\"" -msgstr "" +msgstr "\"{}밀리초 동안 절전 모드\"" #: src/async/pitfalls/async-traits.md:56 msgid "" @@ -20894,6 +20935,10 @@ msgid "" "ensure the system works correctly even when futures are cancelled. For " "example, it shouldn't deadlock or lose data." msgstr "" +"future가 누락되면 다시 폴링할 수 없다는 의미입니다. 이를 _취소_라고 하며, " +"`await` 지점에서 발생할 수 있습니다. future가 취소되더라도 시스템이 올바르게 " +"작동할 수 있도록 주의를 기울여야 합니다. 예를 들어 교착 상태가 되거나 데이터" +"가 손실되면 안 됩니다." #: src/async/pitfalls/cancellation.md:35 #, fuzzy @@ -20902,43 +20947,49 @@ msgstr "UTF-8" #: src/async/pitfalls/cancellation.md:51 msgid "\"hi\\nthere\\n\"" -msgstr "" +msgstr "\"hi\\nthere\\n\"" #: src/async/pitfalls/cancellation.md:57 msgid "\"tick!\"" -msgstr "" +msgstr "\"틱!\"" #: src/async/pitfalls/cancellation.md:72 msgid "" "The compiler doesn't help with cancellation-safety. You need to read API " "documentation and consider what state your `async fn` holds." msgstr "" +"컴파일러는 취소 안전에 도움이 되지 않습니다. API 문서를 읽고 `async fn`의 상" +"태를 고려해야 합니다." #: src/async/pitfalls/cancellation.md:75 msgid "" "Unlike `panic` and `?`, cancellation is part of normal control flow (vs " "error-handling)." msgstr "" +"`panic` 및 `?`와 달리 취소는 오류 처리가 아닌 일반적인 제어 흐름의 일부입니" +"다." #: src/async/pitfalls/cancellation.md:78 msgid "The example loses parts of the string." -msgstr "" +msgstr "이 예에서는 문자열의 일부가 손실됩니다." #: src/async/pitfalls/cancellation.md:80 msgid "" "Whenever the `tick()` branch finishes first, `next()` and its `buf` are " "dropped." -msgstr "" +msgstr "`tick()` 브랜치가 먼저 완료될 때마다 `next()` 및 `buf`가 삭제됩니다." #: src/async/pitfalls/cancellation.md:83 msgid "" "`LinesReader` can be made cancellation-safe by making `buf` part of the " "struct:" msgstr "" +"다음과 같이 `buf`를 구조체의 일부로 만들어 `LinesReader`가 취소되지 않도록 " +"할 수 있습니다." #: src/async/pitfalls/cancellation.md:97 msgid "// prefix buf and bytes with self.\n" -msgstr "" +msgstr "// buf 및 bytes 접두사를 self로 지정합니다.\n" #: src/async/pitfalls/cancellation.md:106 msgid "" @@ -20946,6 +20997,8 @@ msgid "" "html#method.tick) is cancellation-safe because it keeps track of whether a " "tick has been 'delivered'." msgstr "" +"[`Interval::tick`](https://docs.rs/tokio/latest/tokio/time/struct.Interval." +"html#method.tick)은 틱이 'delivered' 됐는지 추적하므로 취소에 안전합니다." #: src/async/pitfalls/cancellation.md:110 msgid "" @@ -20953,6 +21006,9 @@ msgid "" "AsyncReadExt.html#method.read) is cancellation-safe because it either " "returns or doesn't read data." msgstr "" +"[`AsyncReadExt::read`](https://docs.rs/tokio/latest/tokio/io/trait." +"AsyncReadExt.html#method.read)는 데이터를 반환하거나 읽지 않으므로 취소에 안" +"전합니다." #: src/async/pitfalls/cancellation.md:113 msgid "" @@ -20960,23 +21016,30 @@ msgid "" "AsyncBufReadExt.html#method.read_line) is similar to the example and _isn't_ " "cancellation-safe. See its documentation for details and alternatives." msgstr "" +"[`AsyncBufReadExt::read_line`](https://docs.rs/tokio/latest/tokio/io/trait." +"AsyncBufReadExt.html#method.read_line)은 예와 유사하며 취소에 안전하지 _않습" +"니다_. 자세한 내용과 대안은 관련 문서를 참고하세요." #: src/exercises/concurrency/afternoon.md:3 msgid "" "To practice your Async Rust skills, we have again two exercises for you:" -msgstr "" +msgstr "Async Rust 기술을 연습할 수 있도록 두 가지 연습문제를 준비했습니다." #: src/exercises/concurrency/afternoon.md:5 msgid "" "Dining philosophers: we already saw this problem in the morning. This time " "you are going to implement it with Async Rust." msgstr "" +"식사하는 철학자: 이 문제는 이미 오전에 확인했습니다. 이번에는 Async Rust로 구" +"현합니다." #: src/exercises/concurrency/afternoon.md:8 msgid "" "A Broadcast Chat Application: this is a larger project that allows you " "experiment with more advanced Async Rust features." msgstr "" +"브로드캐스트 채팅 애플리케이션: 더 많은 고급 Async Rust 기능을 실험할 수 있" +"는 대규모 프로젝트입니다." #: src/exercises/concurrency/dining-philosophers-async.md:1 #: src/exercises/concurrency/solutions-afternoon.md:3 @@ -20989,6 +21052,7 @@ msgid "" "See [dining philosophers](dining-philosophers.md) for a description of the " "problem." msgstr "" +"문제에 관한 설명은 [식사하는 철학자](dining-philosophers.md)를 참고하세요." #: src/exercises/concurrency/dining-philosophers-async.md:6 #, fuzzy @@ -21004,15 +21068,18 @@ msgstr "" #: src/exercises/concurrency/dining-philosophers-async.md:52 #: src/exercises/concurrency/solutions-afternoon.md:78 msgid "// Make them think and eat\n" -msgstr "" +msgstr "// 생각하고 먹게 합니다.\n" #: src/exercises/concurrency/dining-philosophers-async.md:58 msgid "" "Since this time you are using Async Rust, you'll need a `tokio` dependency. " "You can use the following `Cargo.toml`:" msgstr "" +"이번에는 Async Rust를 사용하므로 `tokio` 종속 항목이 필요합니다. 다음 `Cargo." +"toml`을 사용할 수 있습니다." #: src/exercises/concurrency/dining-philosophers-async.md:63 +#, fuzzy msgid "" "```toml\n" "[package]\n" @@ -21025,16 +21092,28 @@ msgid "" "\"rt-multi-thread\"] }\n" "```" msgstr "" +"```toml\n" +"[package]\n" +"name = \"dining-philosophers-async-dine\"\n" +"version = \"0.1.0\"\n" +"edition = \"2021\"\n" +"\n" +"[dependencies]\n" +"tokio = {version = \"1.26.0\", features = [\"sync\", \"time\", \"macros\", " +"\"rt-multi-thread\"]}\n" +"```" #: src/exercises/concurrency/dining-philosophers-async.md:73 msgid "" "Also note that this time you have to use the `Mutex` and the `mpsc` module " "from the `tokio` crate." msgstr "" +"또한 이번에는 `tokio` 크레이트의 `Mutex`와 `mpsc` 모듈을 사용해야 합니다." #: src/exercises/concurrency/dining-philosophers-async.md:78 +#, fuzzy msgid "Can you make your implementation single-threaded?" -msgstr "" +msgstr "구현을 단일 스레드로 만들 수 있나요? " #: src/exercises/concurrency/chat-app.md:3 msgid "" @@ -21044,24 +21123,35 @@ msgid "" "input, and sends them to the server. The chat server broadcasts each message " "that it receives to all the clients." msgstr "" +"이 연습에서는 새로운 지식을 사용하여 브로드캐스트 채팅 애플리케이션을 구현해 " +"보겠습니다. 클라이언트가 연결하고 메시지를 게시하는 채팅 서버가 있습니다. 클" +"라이언트는 표준 입력에서 사용자 메시지를 읽고 서버로 전송합니다. 채팅 서버는 " +"수신하는 각 메시지를 모든 클라이언트에 브로드캐스트합니다." #: src/exercises/concurrency/chat-app.md:9 +#, fuzzy msgid "" "For this, we use [a broadcast channel](https://docs.rs/tokio/latest/tokio/" "sync/broadcast/fn.channel.html) on the server, and [`tokio_websockets`]" "(https://docs.rs/tokio-websockets/) for the communication between the client " "and the server." msgstr "" +"이를 위해 서버에서 [브로드캐스트 채널](https://docs.rs/tokio/latest/tokio/" +"sync/broadcast/fn.channel.html)을 사용하고 클라이언트와 서버 간의 통신을 위" +"해 [`tokio_websockets`](https://docs.rs/tokio-websockets/0.4.0/" +"tokio_websockets/)를 사용합니다." #: src/exercises/concurrency/chat-app.md:12 msgid "Create a new Cargo project and add the following dependencies:" -msgstr "" +msgstr "새 Cargo 프로젝트를 만들고 다음 종속 항목을 추가합니다." #: src/exercises/concurrency/chat-app.md:14 +#, fuzzy msgid "_Cargo.toml_:" -msgstr "" +msgstr "_Cargo.toml_:" #: src/exercises/concurrency/chat-app.md:18 +#, fuzzy msgid "" "```toml\n" "[package]\n" @@ -21077,31 +21167,56 @@ msgid "" "\"fastrand\", \"server\", \"sha1_smol\"] }\n" "```" msgstr "" +"```toml\n" +"[package]\n" +"name = \"chat-async\"\n" +"version = \"0.1.0\"\n" +"edition = \"2021\"\n" +"\n" +"[dependencies]\n" +"futures-util = { version = \"0.3.28\", features = [\"sink\"] }\n" +"http = \"0.2.9\"\n" +"tokio = { version = \"1.28.1\", features = [\"full\"] }\n" +"tokio-websockets = { version = \"0.4.0\", features = [\"client\", " +"\"fastrand\", \"server\", \"sha1_smol\"] }\n" +"```" #: src/exercises/concurrency/chat-app.md:31 msgid "The required APIs" -msgstr "" +msgstr "필수 API" #: src/exercises/concurrency/chat-app.md:33 +#, fuzzy msgid "" "You are going to need the following functions from `tokio` and " "[`tokio_websockets`](https://docs.rs/tokio-websockets/). Spend a few minutes " "to familiarize yourself with the API." msgstr "" +"`tokio` 및 [`tokio_websockets`](https://docs.rs/tokio-websockets/0.4.0/" +"tokio_websockets/)의 다음 함수가 필요합니다. 잠시 시간을 내어 API를 숙지합니" +"다. " #: src/exercises/concurrency/chat-app.md:37 +#, fuzzy msgid "" "[StreamExt::next()](https://docs.rs/futures-util/0.3.28/futures_util/stream/" "trait.StreamExt.html#method.next) implemented by `WebSocketStream`: for " "asynchronously reading messages from a Websocket Stream." msgstr "" +"`WebsocketStream`에 의해 구현되는 [StreamExt::next()](https://docs.rs/" +"futures-util/0.3.28/futures_util/stream/trait.StreamExt.html#method.next)는 " +"Websocket 스트림에서 비동기식으로 메시지를 읽는 데 사용됩니다." #: src/exercises/concurrency/chat-app.md:39 +#, fuzzy msgid "" "[SinkExt::send()](https://docs.rs/futures-util/0.3.28/futures_util/sink/" "trait.SinkExt.html#method.send) implemented by `WebSocketStream`: for " "asynchronously sending messages on a Websocket Stream." msgstr "" +"`WebsocketStream`에 의해 구현되는 [SinkExt::send()](https://docs.rs/futures-" +"util/0.3.28/futures_util/sink/trait.SinkExt.html#method.send)는 Websocket 스" +"트림에서 비동기식으로 메시지를 보내는 데 사용됩니다." #: src/exercises/concurrency/chat-app.md:41 msgid "" @@ -21109,12 +21224,17 @@ msgid "" "html#method.next_line): for asynchronously reading user messages from the " "standard input." msgstr "" +"[Lines::next_line()](https://docs.rs/tokio/latest/tokio/io/struct.Lines." +"html#method.next_line)은 표준 입력에서 사용자 메시지를 비동기식으로 읽는 데 " +"사용됩니다." #: src/exercises/concurrency/chat-app.md:43 msgid "" "[Sender::subscribe()](https://docs.rs/tokio/latest/tokio/sync/broadcast/" "struct.Sender.html#method.subscribe): for subscribing to a broadcast channel." msgstr "" +"[Sender::subscribe()](https://docs.rs/tokio/latest/tokio/sync/broadcast/" +"struct.Sender.html#method.subscribe)는 브로드캐스트 채널 구독에 사용됩니다." #: src/exercises/concurrency/chat-app.md:45 #, fuzzy @@ -21122,6 +21242,7 @@ msgid "Two binaries" msgstr "러스트 바이너리" #: src/exercises/concurrency/chat-app.md:47 +#, fuzzy msgid "" "Normally in a Cargo project, you can have only one binary, and one `src/main." "rs` file. In this project, we need two binaries. One for the client, and one " @@ -21131,13 +21252,23 @@ msgid "" "(see the [documentation](https://doc.rust-lang.org/cargo/reference/cargo-" "targets.html#binaries))." msgstr "" +"일반적으로 Cargo 프로젝트에서는 바이너리 하나와 `src/main.rs` 파일을 하나만 " +"보유할 수 있습니다. 이 프로젝트에는 두 개의 바이너리가 필요합니다. 하나는 클" +"라이언트용, 하나는 서버용입니다. 잠재적으로 이를 두 개의 개별 Cargo 프로젝트" +"로 만들 수 있지만 여기서는 바이너리 2개를 사용하는 단일 Cargo 프로젝트에 넣습" +"니다. 이렇게 하려면 클라이언트와 서버 코드가 `src/bin`에 있어야 합니다([문서]" +"(https://doc.rust-lang.org/cargo/reference/cargo-targets.html#binaries) 참" +"고). " #: src/exercises/concurrency/chat-app.md:54 +#, fuzzy msgid "" "Copy the following server and client code into `src/bin/server.rs` and `src/" "bin/client.rs`, respectively. Your task is to complete these files as " "described below." msgstr "" +"다음 서버 및 클라이언트 코드를 각각 `src/bin/server.rs`와 `src/bin/client.rs`" +"에 복사합니다. 아래에 설명된 대로 이러한 파일을 완료해야 합니다. " #: src/exercises/concurrency/chat-app.md:58 #: src/exercises/concurrency/solutions-afternoon.md:99 @@ -21148,27 +21279,27 @@ msgstr "_birthday_service/src/server.rs_:" #: src/exercises/concurrency/chat-app.md:77 #: src/exercises/concurrency/chat-app.md:124 msgid "// TODO: For a hint, see the description of the task below.\n" -msgstr "" +msgstr "// TODO: 힌트는 아래의 작업 설명을 참고하세요.\n" #: src/exercises/concurrency/chat-app.md:85 #: src/exercises/concurrency/solutions-afternoon.md:147 msgid "\"127.0.0.1:2000\"" -msgstr "" +msgstr "\"127.0.0.1:2000\"" #: src/exercises/concurrency/chat-app.md:86 #: src/exercises/concurrency/solutions-afternoon.md:148 msgid "\"listening on port 2000\"" -msgstr "" +msgstr "\"포트 2000에서 수신 대기\"" #: src/exercises/concurrency/chat-app.md:90 #: src/exercises/concurrency/solutions-afternoon.md:152 msgid "\"New connection from {addr:?}\"" -msgstr "" +msgstr "\"{addr:?}의 새 연결\"" #: src/exercises/concurrency/chat-app.md:93 #: src/exercises/concurrency/solutions-afternoon.md:155 msgid "// Wrap the raw TCP stream into a websocket.\n" -msgstr "" +msgstr "// 원시 TCP 스트림을 websocket에 래핑합니다.\n" #: src/exercises/concurrency/chat-app.md:102 #: src/exercises/concurrency/solutions-afternoon.md:164 @@ -21179,7 +21310,7 @@ msgstr "_birthday_service/src/client.rs_:" #: src/exercises/concurrency/chat-app.md:116 #: src/exercises/concurrency/solutions-afternoon.md:176 msgid "\"ws://127.0.0.1:2000\"" -msgstr "" +msgstr "\"ws://127.0.0.1:2000\"" #: src/exercises/concurrency/chat-app.md:129 #, fuzzy @@ -21198,7 +21329,7 @@ msgstr "아래 명령어로 예제 코드를 실행하세요." #: src/exercises/concurrency/chat-app.md:145 msgid "Implement the `handle_connection` function in `src/bin/server.rs`." -msgstr "" +msgstr "`src/bin/server.rs`에서 `handle_connection` 함수를 구현합니다." #: src/exercises/concurrency/chat-app.md:146 msgid "" @@ -21206,10 +21337,13 @@ msgid "" "continuous loop. One task receives messages from the client and broadcasts " "them. The other sends messages received by the server to the client." msgstr "" +"힌트: 연속 루프에서 두 작업을 동시에 실행하는 경우 `tokio::select!`를 사용하" +"세요. 한 작업은 클라이언트에서 메시지를 수신하여 브로드캐스트합니다. 다른 하" +"나는 서버가 수신한 메시지를 클라이언트로 보냅니다." #: src/exercises/concurrency/chat-app.md:149 msgid "Complete the main function in `src/bin/client.rs`." -msgstr "" +msgstr "`src/bin/client.rs`에서 main 함수를 완료합니다." #: src/exercises/concurrency/chat-app.md:150 msgid "" @@ -21218,12 +21352,17 @@ msgid "" "sending them to the server, and (2) receiving messages from the server, and " "displaying them for the user." msgstr "" +"힌트: 이전과 마찬가지로 연속 루프에서 두 작업을 동시에 실행하는 경우 `tokio::" +"select!`를 사용하세요. (1) 표준 입력에서 사용자 메시지를 읽고 서버로 보냅니" +"다. (2) 서버에서 메시지를 수신하고 사용자에게 표시합니다." #: src/exercises/concurrency/chat-app.md:154 msgid "" "Optional: Once you are done, change the code to broadcast messages to all " "clients, but the sender of the message." msgstr "" +"선택사항: 작업을 완료하면 메시지 발신자를 제외한 모든 클라이언트에게 메시지" +"를 브로드캐스트하도록 코드를 변경합니다." #: src/exercises/concurrency/solutions-afternoon.md:1 #, fuzzy @@ -21232,17 +21371,19 @@ msgstr "1일차 오후 연습문제" #: src/exercises/concurrency/solutions-afternoon.md:5 msgid "([back to exercise](dining-philosophers-async.md))" -msgstr "" +msgstr "([연습문제로 돌아가기](dining-philosophers-async.md)" #: src/exercises/concurrency/solutions-afternoon.md:33 msgid "" "// Add a delay before picking the second fork to allow the execution\n" " // to transfer to another task\n" msgstr "" +"// 두 번째 포크를 선택하기 전에 다른 작업으로 전송하는 실행을 허용하도록\n" +" // 지연을 추가합니다.\n" #: src/exercises/concurrency/solutions-afternoon.md:41 msgid "// The locks are dropped here\n" -msgstr "" +msgstr "// 여기에 잠금이 해제됩니다.\n" #: src/exercises/concurrency/solutions-afternoon.md:61 msgid "" @@ -21250,22 +21391,27 @@ msgid "" " // somewhere. This will swap the forks without deinitializing\n" " // either of them.\n" msgstr "" +"// 교착 상태를 방지하려면 어딘가에서\n" +" // 대칭을 중단시켜야 합니다. 이렇게 하면 둘 중 어느 하나라도 초기화하" +"지 않고\n" +" // 포크가 교체됩니다.\n" #: src/exercises/concurrency/solutions-afternoon.md:75 msgid "// tx is dropped here, so we don't need to explicitly drop it later\n" msgstr "" +"// tx가 여기에서 삭제되므로 나중에 명시적으로 삭제할 필요가 없습니다.\n" #: src/exercises/concurrency/solutions-afternoon.md:90 msgid "\"Here is a thought: {thought}\"" -msgstr "" +msgstr "\"의견 보내기: {thought}\"" #: src/exercises/concurrency/solutions-afternoon.md:97 msgid "([back to exercise](chat-app.md))" -msgstr "" +msgstr "([연습문제로 돌아가기](chat-app.md))" #: src/exercises/concurrency/solutions-afternoon.md:116 msgid "\"Welcome to chat! Type a message\"" -msgstr "" +msgstr "\"채팅에 오신 것을 환영합니다. 메시지를 입력하세요.\"" #: src/exercises/concurrency/solutions-afternoon.md:119 msgid "" @@ -21273,18 +21419,22 @@ msgid "" " // messages from `ws_stream` and broadcasting them, and (2) receiving\n" " // messages on `bcast_rx` and sending them to the client.\n" msgstr "" +"// 동시에 두 작업을 실행하는 연속 루프: (1) `ws_stream`에서 메시지를 수신하" +"여\n" +" // 브로드캐스팅하고 (2) `bcast_rx`에서 메시지를 수신하여\n" +" // 클라이언트로 전송합니다.\n" #: src/exercises/concurrency/solutions-afternoon.md:128 msgid "\"From client {addr:?} {text:?}\"" -msgstr "" +msgstr "\"클라이언트에서: {addr:?} {text:?}\"" #: src/exercises/concurrency/solutions-afternoon.md:183 msgid "// Continuous loop for concurrently sending and receiving messages.\n" -msgstr "" +msgstr "// 동시에 메시지를 보내고 받는 연속 루프\n" #: src/exercises/concurrency/solutions-afternoon.md:190 msgid "\"From server: {}\"" -msgstr "" +msgstr "\"서버에서: {}\"" #: src/thanks.md:3 msgid "" @@ -21310,18 +21460,24 @@ msgid "" "Rust terms. For translations, this also serves to connect the term back to " "the English original." msgstr "" +"다음은 여러 Rust 용어의 간단한 정의를 제공하는 용어집입니다. 번역의 경우 용어" +"를 다시 영어 원본에 연결하는 역할도 합니다." #: src/glossary.md:30 msgid "" "allocate: \n" "Dynamic memory allocation on [the heap](memory-management/stack-vs-heap.md)." msgstr "" +"할당: \n" +"[힙](memory-management/stack-vs-heap.md)에 대한 동적 메모리 할당입니다." #: src/glossary.md:32 msgid "" "argument: \n" "Information that is passed into a function or method." msgstr "" +"인수: \n" +"함수나 메서드에 전달되는 정보입니다." #: src/glossary.md:34 msgid "" @@ -21329,30 +21485,41 @@ msgid "" "Low-level Rust development, often deployed to a system without an operating " "system. See [Bare-metal Rust](bare-metal.md)." msgstr "" +"Bare-metal Rust: \n" +"낮은 수준의 Rust 개발로, 운영체제가 없는 시스템에 배포되는 경우가 많습니다. " +"[Bare-metal Rust](bare-metal.md)를 참고하세요." #: src/glossary.md:37 msgid "" "block: \n" "See [Blocks](control-flow/blocks.md) and _scope_." msgstr "" +"블록: \n" +"[블록](control-flow/blocks.md) 및 _범위_를 참고하세요." #: src/glossary.md:39 msgid "" "borrow: \n" "See [Borrowing](ownership/borrowing.md)." msgstr "" +"빌림: \n" +"[빌림](ownership/borrowing.md)을 참고하세요." #: src/glossary.md:41 msgid "" "borrow checker: \n" "The part of the Rust compiler which checks that all borrows are valid." msgstr "" +"빌림 검사기: \n" +"모든 빌림이 유효한지 확인하는 Rust 컴파일러의 부분입니다." #: src/glossary.md:43 msgid "" "brace: \n" "`{` and `}`. Also called _curly brace_, they delimit _blocks_." msgstr "" +"괄호: \n" +"`{` and `}`. _중괄호_라고도 하며 _블록_을 구분합니다." #: src/glossary.md:45 msgid "" @@ -21360,42 +21527,58 @@ msgid "" "The process of converting source code into executable code or a usable " "program." msgstr "" +"빌드: \n" +"소스 코드를 실행 가능한 코드 또는 사용 가능한 프로그램으로 변환하는 프로세스" +"입니다." #: src/glossary.md:48 msgid "" "call: \n" "To invoke or execute a function or method." msgstr "" +"호출: \n" +"함수 또는 메서드를 호출하거나 실행합니다." #: src/glossary.md:50 msgid "" "channel: \n" "Used to safely pass messages [between threads](concurrency/channels.md)." msgstr "" +"채널: \n" +"[스레드 간](concurrency/channels.md)에 메시지를 안전하게 전달하는 데 사용됩니" +"다." #: src/glossary.md:52 msgid "" "Comprehensive Rust 🦀: \n" "The courses here are jointly called Comprehensive Rust 🦀." msgstr "" +"Comprehensive Rust 🦀: \n" +"이 과정은 Comprehensive Rust 🦀로 통칭됩니다." #: src/glossary.md:54 msgid "" "concurrency: \n" "The execution of multiple tasks or processes at the same time." msgstr "" +"동시 실행: \n" +"여러 작업 또는 프로세스를 동시에 실행합니다." #: src/glossary.md:56 msgid "" "Concurrency in Rust: \n" "See [Concurrency in Rust](concurrency.md)." msgstr "" +"Rust의 동시 실행: \n" +"[Rust의 동시 실행](concurrency.md)을 참고하세요." #: src/glossary.md:58 msgid "" "constant: \n" "A value that does not change during the execution of a program." msgstr "" +"상수: \n" +"프로그램 실행 중에 변경되지 않는 값입니다." #: src/glossary.md:60 msgid "" @@ -21403,24 +21586,32 @@ msgid "" "The order in which the individual statements or instructions are executed in " "a program." msgstr "" +"제어 흐름: \n" +"프로그램에서 개별 문 또는 명령이 실행되는 순서입니다." #: src/glossary.md:63 msgid "" "crash: \n" "An unexpected and unhandled failure or termination of a program." msgstr "" +"비정상 종료: \n" +"프로그램의 예기치 않거나 처리되지 않은 오류 또는 종료입니다." #: src/glossary.md:65 msgid "" "enumeration: \n" "A data type that consists of named constant values." msgstr "" +"열거형: \n" +"이름이 지정된 상수 값으로 구성된 데이터 타입입니다." #: src/glossary.md:67 msgid "" "error: \n" "An unexpected condition or result that deviates from the expected behavior." msgstr "" +"오류: \n" +"예상 동작을 벗어나는 예기치 못한 상태나 결과입니다." #: src/glossary.md:69 msgid "" @@ -21428,18 +21619,24 @@ msgid "" "The process of managing and responding to errors that occur during program " "execution." msgstr "" +"오류 처리: \n" +"프로그램 실행 중에 발생하는 오류를 관리하고 이에 대응하는 프로세스입니다." #: src/glossary.md:72 msgid "" "exercise: \n" "A task or problem designed to practice and test programming skills." msgstr "" +"연습: \n" +"프로그래밍 기술을 연습하고 테스트하기 위한 과제 또는 문제입니다." #: src/glossary.md:74 msgid "" "function: \n" "A reusable block of code that performs a specific task." msgstr "" +"함수: \n" +"특정 작업을 실행하는 재사용 가능한 코드 블록입니다." #: src/glossary.md:76 msgid "" @@ -21447,6 +21644,9 @@ msgid "" "A mechanism that automatically frees up memory occupied by objects that are " "no longer in use." msgstr "" +"가비지 컬렉터: \n" +"더 이상 사용되지 않는 객체가 차지하는 메모리를 자동으로 해제하는 메커니즘입니" +"다." #: src/glossary.md:79 msgid "" @@ -21454,12 +21654,17 @@ msgid "" "A feature that allows writing code with placeholders for types, enabling " "code reuse with different data types." msgstr "" +"제네릭: \n" +"타입에 관한 자리표시자를 사용하여 코드를 작성할 수 있는 기능으로, 다양한 데이" +"터 타입으로 코드를 재사용할 수 있습니다." #: src/glossary.md:82 msgid "" "immutable: \n" "Unable to be changed after creation." msgstr "" +"변경 불가능: \n" +"생성 후에는 변경할 수 없습니다." #: src/glossary.md:84 msgid "" @@ -21467,6 +21672,8 @@ msgid "" "A type of test that verifies the interactions between different parts or " "components of a system." msgstr "" +"통합 테스트: \n" +"시스템의 여러 부분 또는 구성요소 간의 상호작용을 확인하는 테스트 타입입니다." #: src/glossary.md:87 msgid "" @@ -21474,12 +21681,16 @@ msgid "" "A reserved word in a programming language that has a specific meaning and " "cannot be used as an identifier." msgstr "" +"키워드: \n" +"프로그래밍 언어에서 특정 의미를 가지며 식별자로 사용될 수 없는 예약어입니다." #: src/glossary.md:90 msgid "" "library: \n" "A collection of precompiled routines or code that can be used by programs." msgstr "" +"라이브러리: \n" +"프로그램에서 사용할 수 있는 사전 컴파일된 루틴 또는 코드 모음입니다." #: src/glossary.md:92 msgid "" @@ -21488,12 +21699,18 @@ msgid "" "normal functions are not enough. A typical example is `format!`, which takes " "a variable number of arguments, which isn't supported by Rust functions." msgstr "" +"매크로: \n" +"Rust 매크로는 이름의 `!`로 인식될 수 있습니다. 매크로는 일반 함수가 충분하지 " +"않을 때 사용됩니다. 일반적인 예로는 가변적인 인수 수를 사용하는 `format!`이 " +"있는데, 이는 Rust 함수에서 지원되지 않습니다." #: src/glossary.md:96 msgid "" "`main` function: \n" "Rust programs start executing with the `main` function." msgstr "" +"`main` 함수: \n" +"Rust 프로그램은 `main` 함수로 실행을 시작합니다." #: src/glossary.md:98 msgid "" @@ -21501,6 +21718,8 @@ msgid "" "A control flow construct in Rust that allows for pattern matching on the " "value of an expression." msgstr "" +"일치: \n" +"표현식 값에 대한 패턴 일치를 허용하는 Rust의 제어 흐름 구성입니다." #: src/glossary.md:101 msgid "" @@ -21508,12 +21727,17 @@ msgid "" "A situation where a program fails to release memory that is no longer " "needed, leading to a gradual increase in memory usage." msgstr "" +"메모리 누수: \n" +"프로그램이 더 이상 필요하지 않은 메모리를 해제하지 못해 메모리 사용량이 점차 " +"늘어나는 상황입니다." #: src/glossary.md:104 msgid "" "method: \n" "A function associated with an object or a type in Rust." msgstr "" +"메서드: \n" +"Rust의 객체나 타입과 관련된 함수입니다." #: src/glossary.md:106 msgid "" @@ -21521,12 +21745,17 @@ msgid "" "A namespace that contains definitions, such as functions, types, or traits, " "to organize code in Rust." msgstr "" +"모듈: \n" +"Rust에서 코드를 구성하기 위해 함수, 타입 또는 트레잇과 같은 정의가 포함된 네" +"임스페이스입니다." #: src/glossary.md:109 msgid "" "move: \n" "The transfer of ownership of a value from one variable to another in Rust." msgstr "" +"이동: \n" +"Rust에서 한 변수에서 다른 변수로 값의 소유권을 이전하는 것입니다." #: src/glossary.md:111 msgid "" @@ -21534,6 +21763,8 @@ msgid "" "A property in Rust that allows variables to be modified after they have been " "declared." msgstr "" +"mutable: \n" +"선언된 후 변수를 수정할 수 있는 Rust의 속성입니다." #: src/glossary.md:114 msgid "" @@ -21541,6 +21772,8 @@ msgid "" "The concept in Rust that defines which part of the code is responsible for " "managing the memory associated with a value." msgstr "" +"소유권: \n" +"값과 관련된 메모리를 관리하는 코드의 부분을 정의하는 Rust의 개념입니다." #: src/glossary.md:117 msgid "" @@ -21548,12 +21781,16 @@ msgid "" "An unrecoverable error condition in Rust that results in the termination of " "the program." msgstr "" +"패닉: \n" +"Rust에서 복구할 수 없는 오류 상태로, 프로그램이 종료됩니다." #: src/glossary.md:120 msgid "" "parameter: \n" "A value that is passed into a function or method when it is called." msgstr "" +"매개변수: \n" +"호출 시 함수나 메서드로 전달되는 값입니다." #: src/glossary.md:122 msgid "" @@ -21561,12 +21798,16 @@ msgid "" "A combination of values, literals, or structures that can be matched against " "an expression in Rust." msgstr "" +"패턴: \n" +"Rust의 표현식과 일치시킬 수 있는 값, 리터럴 또는 구조의 조합입니다." #: src/glossary.md:125 msgid "" "payload: \n" "The data or information carried by a message, event, or data structure." msgstr "" +"페이로드: \n" +"메시지, 이벤트 또는 데이터 구조에 의해 전달되는 데이터 또는 정보입니다." #: src/glossary.md:127 msgid "" @@ -21574,12 +21815,17 @@ msgid "" "A set of instructions that a computer can execute to perform a specific task " "or solve a particular problem." msgstr "" +"프로그램: \n" +"컴퓨터가 특정 작업을 수행하거나 특정 문제를 해결하기 위해 실행할 수 있는 일련" +"의 명령입니다." #: src/glossary.md:130 msgid "" "programming language: \n" "A formal system used to communicate instructions to a computer, such as Rust." msgstr "" +"프로그래밍 언어: \n" +"컴퓨터에 명령을 전달하는 데 사용되는 공식 시스템입니다(예: Rust)." #: src/glossary.md:132 msgid "" @@ -21587,6 +21833,8 @@ msgid "" "The first parameter in a Rust method that represents the instance on which " "the method is called." msgstr "" +"수신자: \n" +"메서드가 호출되는 인스턴스를 나타내는 Rust 메서드의 첫 번째 매개변수입니다." #: src/glossary.md:135 msgid "" @@ -21594,12 +21842,17 @@ msgid "" "A memory management technique in which the number of references to an object " "is tracked, and the object is deallocated when the count reaches zero." msgstr "" +"참조 계산: \n" +"객체에 대한 참조 수를 추적하고 개수가 0에 도달하면 객체의 할당을 해제하는 메" +"모리 관리 기법입니다." #: src/glossary.md:138 msgid "" "return: \n" "A keyword in Rust used to indicate the value to be returned from a function." msgstr "" +"return: \n" +"함수에서 반환될 값을 나타내는 데 사용되는 Rust의 키워드입니다." #: src/glossary.md:140 msgid "" @@ -21607,24 +21860,32 @@ msgid "" "A systems programming language that focuses on safety, performance, and " "concurrency." msgstr "" +"Rust: \n" +"안전, 성능, 동시 실행에 중점을 둔 시스템 프로그래밍 언어입니다." #: src/glossary.md:143 msgid "" "Rust Fundamentals: \n" "Days 1 to 3 of this course." msgstr "" +"Rust 기초: \n" +"1~3일 차 과정입니다." #: src/glossary.md:145 msgid "" "Rust in Android: \n" "See [Rust in Android](android.md)." msgstr "" +"Android의 Rust: \n" +"[Android의 Rust](android.md)를 참고하세요." #: src/glossary.md:147 msgid "" "Rust in Chromium: \n" "See [Rust in Chromium](chromium.md)." msgstr "" +"Chromium의 Rust: \n" +"[Chromium의 Rust](chromium.md)를 참고하세요." #: src/glossary.md:149 msgid "" @@ -21632,18 +21893,25 @@ msgid "" "Refers to code that adheres to Rust's ownership and borrowing rules, " "preventing memory-related errors." msgstr "" +"안전: \n" +"Rust의 소유권 및 빌림 규칙을 준수하여 메모리 관련 오류를 방지하는 코드를 나타" +"냅니다." #: src/glossary.md:152 msgid "" "scope: \n" "The region of a program where a variable is valid and can be used." msgstr "" +"범위: \n" +"변수가 유효하여 사용할 수 있는 프로그램의 영역입니다." #: src/glossary.md:154 msgid "" "standard library: \n" "A collection of modules providing essential functionality in Rust." msgstr "" +"표준 라이브러리: \n" +"Rust에서 필수 기능을 제공하는 모듈 모음입니다." #: src/glossary.md:156 msgid "" @@ -21651,6 +21919,9 @@ msgid "" "A keyword in Rust used to define static variables or items with a `'static` " "lifetime." msgstr "" +"static: \n" +"Rust에서 `'static` 전체 기간으로 정적 변수 또는 항목을 정의하는 데 사용되는 " +"키워드입니다." #: src/glossary.md:159 msgid "" @@ -21658,6 +21929,9 @@ msgid "" "A data type storing textual data. See [`String` vs `str`](basic-syntax/" "string-slices.html) for more." msgstr "" +"문자열: \n" +"텍스트 데이터를 저장하는 데이터 타입입니다. 자세한 내용은 [`String` 및 `str`]" +"(basic-syntax/string-slices.html)을 참고하세요." #: src/glossary.md:162 msgid "" @@ -21665,6 +21939,8 @@ msgid "" "A composite data type in Rust that groups together variables of different " "types under a single name." msgstr "" +"구조체: \n" +"다양한 타입의 변수를 단일 이름으로 그룹화하는 Rust의 복합 데이터 타입입니다." #: src/glossary.md:165 msgid "" @@ -21672,12 +21948,16 @@ msgid "" "A Rust module containing functions that test the correctness of other " "functions." msgstr "" +"test: \n" +"다른 함수의 정확성을 테스트하는 함수가 포함된 Rust 모듈입니다." #: src/glossary.md:168 msgid "" "thread: \n" "A separate sequence of execution in a program, allowing concurrent execution." msgstr "" +"스레드: \n" +"프로그램의 별도 실행 시퀀스로, 동시 실행을 허용합니다." #: src/glossary.md:170 msgid "" @@ -21685,6 +21965,8 @@ msgid "" "The property of a program that ensures correct behavior in a multithreaded " "environment." msgstr "" +"스레드 안전: \n" +"다중 스레드 환경에서 올바른 동작을 보장하는 프로그램의 속성입니다." #: src/glossary.md:173 msgid "" @@ -21692,6 +21974,9 @@ msgid "" "A collection of methods defined for an unknown type, providing a way to " "achieve polymorphism in Rust." msgstr "" +"트레잇: \n" +"알 수 없는 타입에 관해 정의된 메서드 모음으로, Rust에서 다형성을 달성하는 방" +"법을 제공합니다." #: src/glossary.md:176 msgid "" @@ -21706,6 +21991,9 @@ msgid "" "A classification that specifies which operations can be performed on values " "of a particular kind in Rust." msgstr "" +"타입: \n" +"Rust에서 특정 종류의 값에 대해 어떤 작업을 실행할 수 있는지 지정하는 분류입니" +"다." #: src/glossary.md:182 msgid "" @@ -21713,6 +22001,8 @@ msgid "" "The ability of the Rust compiler to deduce the type of a variable or " "expression." msgstr "" +"타입 추론: \n" +"변수나 표현식의 타입을 추론하는 Rust 컴파일러의 기능입니다." #: src/glossary.md:185 msgid "" @@ -21720,12 +22010,17 @@ msgid "" "Actions or conditions in Rust that have no specified result, often leading " "to unpredictable program behavior." msgstr "" +"정의되지 않은 동작: \n" +"지정된 결과가 없는 Rust의 작업 또는 조건으로, 종종 예측할 수 없는 프로그램 동" +"작을 초래합니다." #: src/glossary.md:188 msgid "" "union: \n" "A data type that can hold values of different types but only one at a time." msgstr "" +"union: \n" +"한 번에 하나씩만 여러 타입의 값을 보유할 수 있는 데이터 타입입니다." #: src/glossary.md:190 msgid "" @@ -21733,6 +22028,9 @@ msgid "" "Rust comes with built-in support for running small unit tests and larger " "integration tests. See [Unit Tests](testing/unit-tests.html)." msgstr "" +"단위 테스트: \n" +"Rust에는 작은 단위 테스트와 대규모 통합 테스트를 실행할 수 있는 지원 기능이 " +"내장되어 있습니다. [단위 테스트](testing/unit-tests.html)를 참고하세요." #: src/glossary.md:193 msgid "" @@ -21740,12 +22038,18 @@ msgid "" "The subset of Rust which allows you to trigger _undefined behavior_. See " "[Unsafe Rust](unsafe.html)." msgstr "" +"안전하지 않음: \n" +"_정의되지 않은 동작_을 트리거할 수 있는 Rust의 하위 집합입니다. [안전하지 않" +"은 Rust](unsafe.html)를 참고하세요." #: src/glossary.md:196 +#, fuzzy msgid "" "variable: \n" "A memory location storing data. Variables are valid in a _scope_." msgstr "" +"변수: \n" +"데이터를 저장하는 메모리 위치입니다. 변수는 _범위_에서 유효합니다. " #: src/other-resources.md:1 msgid "Other Rust Resources" @@ -34104,3 +34408,6 @@ msgstr "" #~ msgid "Day 3 Afternoon Exercises" #~ msgstr "3일차 오후 연습문제" + +#~ msgid "\"127.0.0.1:6142\"" +#~ msgstr "'127.0.0.1:6142'"