diff --git a/po/zh-TW.po b/po/zh-TW.po index 85244e9e4ba2..fb686532ee92 100644 --- a/po/zh-TW.po +++ b/po/zh-TW.po @@ -57,9 +57,8 @@ msgid "Welcome" msgstr "歡迎" #: src/SUMMARY.md src/hello-world.md src/types-and-values/hello-world.md -#, fuzzy msgid "Hello, World" -msgstr "Hello World!" +msgstr "Hello, World" #: src/SUMMARY.md src/hello-world/what-is-rust.md msgid "What is Rust?" @@ -67,15 +66,15 @@ msgstr "什麼是 Rust?" #: src/SUMMARY.md src/hello-world/benefits.md msgid "Benefits of Rust" -msgstr "" +msgstr "Rust 的優點" #: src/SUMMARY.md src/hello-world/playground.md msgid "Playground" -msgstr "" +msgstr "Playground" #: src/SUMMARY.md src/types-and-values.md msgid "Types and Values" -msgstr "" +msgstr "型別和值" #: src/SUMMARY.md src/types-and-values/variables.md msgid "Variables" @@ -83,11 +82,11 @@ msgstr "變數" #: src/SUMMARY.md src/types-and-values/values.md msgid "Values" -msgstr "" +msgstr "值" #: src/SUMMARY.md src/types-and-values/arithmetic.md msgid "Arithmetic" -msgstr "" +msgstr "算術" #: src/SUMMARY.md src/types-and-values/strings.md msgid "Strings" @@ -99,7 +98,7 @@ msgstr "型別推斷" #: src/SUMMARY.md src/types-and-values/exercise.md msgid "Exercise: Fibonacci" -msgstr "" +msgstr "練習:費波那契數列" #: src/SUMMARY.md src/types-and-values/solution.md #: src/control-flow-basics/solution.md src/tuples-and-arrays/solution.md @@ -111,14 +110,12 @@ msgstr "" #: src/slices-and-lifetimes/solution.md src/iterators/solution.md #: src/modules/solution.md src/testing/solution.md #: src/error-handling/solution.md src/unsafe-rust/solution.md -#, fuzzy msgid "Solution" msgstr "解決方案" #: src/SUMMARY.md src/control-flow-basics.md -#, fuzzy msgid "Control Flow Basics" -msgstr "控制流程" +msgstr "基本的控制流程概念" #: src/SUMMARY.md #, fuzzy @@ -131,13 +128,12 @@ msgid "Loops" msgstr "`for` 迴圈" #: src/SUMMARY.md src/control-flow-basics/loops/for.md -#, fuzzy msgid "`for`" -msgstr "`for` 迴圈" +msgstr "`for`" #: src/SUMMARY.md src/control-flow-basics/loops/loop.md msgid "`loop`" -msgstr "" +msgstr "`loop` 迴圈" #: src/SUMMARY.md src/control-flow-basics/break-continue.md msgid "`break` and `continue`" @@ -145,11 +141,11 @@ msgstr "`break` 和 `continue`" #: src/SUMMARY.md src/control-flow-basics/break-continue/labels.md msgid "Labels" -msgstr "" +msgstr "標籤" #: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes.md msgid "Blocks and Scopes" -msgstr "" +msgstr "區塊 (block) 和範疇 (scope)" #: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes/scopes.md msgid "Scopes and Shadowing" @@ -161,11 +157,11 @@ msgstr "函式" #: src/SUMMARY.md src/control-flow-basics/macros.md msgid "Macros" -msgstr "" +msgstr "巨集" #: src/SUMMARY.md src/control-flow-basics/exercise.md msgid "Exercise: Collatz Sequence" -msgstr "" +msgstr "練習:考拉茲序列" #: src/SUMMARY.md msgid "Day 1: Afternoon" @@ -173,7 +169,7 @@ msgstr "第 1 天:下午" #: src/SUMMARY.md src/tuples-and-arrays.md msgid "Tuples and Arrays" -msgstr "" +msgstr "元組和陣列" #: src/SUMMARY.md src/tuples-and-arrays/arrays.md msgid "Arrays" @@ -195,7 +191,7 @@ msgstr "模式配對" #: src/SUMMARY.md src/tuples-and-arrays/exercise.md msgid "Exercise: Nested Arrays" -msgstr "" +msgstr "練習:巢狀陣列" #: src/SUMMARY.md src/references.md msgid "References" @@ -204,7 +200,7 @@ msgstr "參照" #: src/SUMMARY.md src/references/shared.md #, fuzzy msgid "Shared References" -msgstr "參照" +msgstr "共用列舉" #: src/SUMMARY.md src/references/exclusive.md #, fuzzy @@ -213,11 +209,11 @@ msgstr "迷途參照" #: src/SUMMARY.md src/references/exercise.md msgid "Exercise: Geometry" -msgstr "" +msgstr "練習:幾何圖形" #: src/SUMMARY.md src/user-defined-types.md msgid "User-Defined Types" -msgstr "" +msgstr "使用者定義的型別" #: src/SUMMARY.md src/user-defined-types/named-structs.md #, fuzzy @@ -240,11 +236,11 @@ msgstr "靜態和常數" #: src/SUMMARY.md src/user-defined-types/aliases.md msgid "Type Aliases" -msgstr "" +msgstr "型別別名" #: src/SUMMARY.md src/user-defined-types/exercise.md msgid "Exercise: Elevator Events" -msgstr "" +msgstr "練習:電梯事件" #: src/SUMMARY.md msgid "Day 2: Morning" @@ -270,7 +266,7 @@ msgstr "控制流程" #: src/SUMMARY.md src/pattern-matching/exercise.md msgid "Exercise: Expression Evaluation" -msgstr "" +msgstr "練習:運算式求值" #: src/SUMMARY.md src/methods-and-traits.md #, fuzzy @@ -301,7 +297,7 @@ msgstr "衍生特徵" #: src/SUMMARY.md src/methods-and-traits/exercise.md msgid "Exercise: Generic Logger" -msgstr "" +msgstr "練習:泛型 Logger" #: src/SUMMARY.md src/generics.md msgid "Generics" @@ -326,7 +322,7 @@ msgstr "`impl Trait`" #: src/SUMMARY.md src/generics/exercise.md msgid "Exercise: Generic `min`" -msgstr "" +msgstr "練習:泛型 `min`" #: src/SUMMARY.md msgid "Day 2: Afternoon" @@ -348,17 +344,16 @@ msgstr "說明文件測試" #: src/SUMMARY.md msgid "`Option`" -msgstr "" +msgstr "`Option`" #: src/SUMMARY.md msgid "`Result`" -msgstr "" +msgstr "`Result`" #: src/SUMMARY.md src/android/aidl/types/primitives.md #: src/android/interoperability/cpp/type-mapping.md -#, fuzzy msgid "`String`" -msgstr "String" +msgstr "`String`" #: src/SUMMARY.md src/std-types/vec.md msgid "`Vec`" @@ -369,9 +364,8 @@ msgid "`HashMap`" msgstr "`HashMap`" #: src/SUMMARY.md src/std-types/exercise.md -#, fuzzy msgid "Exercise: Counter" -msgstr "練習" +msgstr "練習:計數器" #: src/SUMMARY.md src/std-traits.md #, fuzzy @@ -402,16 +396,15 @@ msgstr "`Read` 和 `Write`" #: src/SUMMARY.md msgid "`Default`, struct update syntax" -msgstr "" +msgstr "`Default` (結構體更新語法)" #: src/SUMMARY.md src/std-traits/closures.md msgid "Closures" msgstr "閉包" #: src/SUMMARY.md src/std-traits/exercise.md -#, fuzzy msgid "Exercise: ROT13" -msgstr "練習" +msgstr "練習:ROT13 (迴轉13位)" #: src/SUMMARY.md msgid "Day 3: Morning" @@ -423,7 +416,7 @@ msgstr "記憶體管理" #: src/SUMMARY.md src/memory-management/review.md msgid "Review of Program Memory" -msgstr "" +msgstr "檢查程式記憶體" #: src/SUMMARY.md src/memory-management/approaches.md #, fuzzy @@ -440,31 +433,28 @@ msgstr "移動語意" #: src/SUMMARY.md msgid "`Clone`" -msgstr "" +msgstr "`Clone`" #: src/SUMMARY.md src/memory-management/copy-types.md -#, fuzzy msgid "Copy Types" -msgstr "複合型別" +msgstr "Copy 型別" #: src/SUMMARY.md -#, fuzzy msgid "`Drop`" -msgstr "Drop" +msgstr "`Drop`" #: src/SUMMARY.md src/memory-management/exercise.md msgid "Exercise: Builder Type" -msgstr "" +msgstr "練習:建構工具型別" #: src/SUMMARY.md src/smart-pointers.md msgid "Smart Pointers" -msgstr "" +msgstr "智慧指標" #: src/SUMMARY.md src/smart-pointers/box.md #: src/android/interoperability/cpp/type-mapping.md -#, fuzzy msgid "`Box`" -msgstr "`Box`" +msgstr "`Box`" #: src/SUMMARY.md src/smart-pointers/rc.md msgid "`Rc`" @@ -476,7 +466,7 @@ msgstr "特徵物件" #: src/SUMMARY.md src/smart-pointers/exercise.md msgid "Exercise: Binary Tree" -msgstr "" +msgstr "練習:二元樹" #: src/SUMMARY.md msgid "Day 3: Afternoon" @@ -497,14 +487,12 @@ msgid "Borrow Checking" msgstr "借用" #: src/SUMMARY.md src/borrowing/interior-mutability.md -#, fuzzy msgid "Interior Mutability" -msgstr "互通性" +msgstr "內部可變性 (Interior Mutability)" #: src/SUMMARY.md src/borrowing/exercise.md -#, fuzzy msgid "Exercise: Health Statistics" -msgstr "健康統計資料" +msgstr "練習:衛生統計資料" #: src/SUMMARY.md src/slices-and-lifetimes.md #, fuzzy @@ -538,12 +526,11 @@ msgstr "生命週期" #: src/SUMMARY.md src/slices-and-lifetimes/exercise.md msgid "Exercise: Protobuf Parsing" -msgstr "" +msgstr "練習:Protobuf 剖析" #: src/SUMMARY.md -#, fuzzy msgid "Day 4: Morning" -msgstr "第 1 天:上午" +msgstr "第 4 天:上午" #: src/SUMMARY.md src/iterators.md msgid "Iterators" @@ -558,13 +545,12 @@ msgid "`IntoIterator`" msgstr "`IntoIterator`" #: src/SUMMARY.md -#, fuzzy msgid "`FromIterator`" -msgstr "FromIterator" +msgstr "`FromIterator`" #: src/SUMMARY.md src/iterators/exercise.md msgid "Exercise: Iterator Method Chaining" -msgstr "" +msgstr "練習:疊代器方法鏈結" #: src/SUMMARY.md src/modules.md src/modules/modules.md msgid "Modules" @@ -580,11 +566,11 @@ msgstr "能見度" #: src/SUMMARY.md msgid "`use`, `super`, `self`" -msgstr "" +msgstr "`use`、`super`、`self`" #: src/SUMMARY.md src/modules/exercise.md msgid "Exercise: Modules for a GUI Library" -msgstr "" +msgstr "練習:GUI 程式庫的模組" #: src/SUMMARY.md src/testing.md src/chromium/testing.md msgid "Testing" @@ -601,7 +587,7 @@ msgstr "其他資源" #: src/SUMMARY.md src/testing/lints.md msgid "Compiler Lints and Clippy" -msgstr "" +msgstr "編譯器檢查 (Lint) 和 Clippy " #: src/SUMMARY.md src/testing/exercise.md #, fuzzy @@ -609,9 +595,8 @@ msgid "Exercise: Luhn Algorithm" msgstr "盧恩演算法" #: src/SUMMARY.md -#, fuzzy msgid "Day 4: Afternoon" -msgstr "第 1 天:下午" +msgstr "第 4 天:下午" #: src/SUMMARY.md src/error-handling.md msgid "Error Handling" @@ -680,7 +665,7 @@ msgstr "實作不安全的特徵" #: src/SUMMARY.md #, fuzzy msgid "Exercise: FFI Wrapper" -msgstr "安全的 FFI 包裝函式" +msgstr "練習:封裝外部函式介面 (FFI)" #: src/SUMMARY.md src/bare-metal/android.md msgid "Android" @@ -774,11 +759,11 @@ msgstr "" #: src/SUMMARY.md src/android/testing/googletest.md msgid "GoogleTest" -msgstr "" +msgstr "GoogleTest" #: src/SUMMARY.md src/android/testing/mocking.md msgid "Mocking" -msgstr "" +msgstr "模擬 (Mocking)" #: src/SUMMARY.md src/android/logging.md src/bare-metal/aps/logging.md msgid "Logging" @@ -811,24 +796,24 @@ msgstr "測試模組" #: src/SUMMARY.md msgid "Rust Bridge" -msgstr "" +msgstr "Rust 橋接器" #: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md msgid "Generated C++" -msgstr "" +msgstr "產生的 C++" #: src/SUMMARY.md msgid "C++ Bridge" -msgstr "" +msgstr "C++ 橋接器" #: src/SUMMARY.md src/android/interoperability/cpp/shared-types.md #, fuzzy msgid "Shared Types" -msgstr "純量型別" +msgstr "共用型別" #: src/SUMMARY.md src/android/interoperability/cpp/shared-enums.md msgid "Shared Enums" -msgstr "" +msgstr "共用列舉" #: src/SUMMARY.md src/android/interoperability/cpp/rust-result.md #, fuzzy @@ -842,19 +827,19 @@ msgstr "錯誤處理" #: src/SUMMARY.md src/android/interoperability/cpp/type-mapping.md msgid "Additional Types" -msgstr "" +msgstr "其他型別" #: src/SUMMARY.md msgid "Building for Android: C++" -msgstr "" +msgstr "針對 Android 建構:C++" #: src/SUMMARY.md msgid "Building for Android: Genrules" -msgstr "" +msgstr "針對 Android 建構:Genrules" #: src/SUMMARY.md msgid "Building for Android: Rust" -msgstr "" +msgstr "針對 Android 建構:Rust" #: src/SUMMARY.md msgid "With Java" @@ -868,15 +853,15 @@ msgstr "練習" #: src/SUMMARY.md msgid "Chromium" -msgstr "" +msgstr "Chromium" #: src/SUMMARY.md src/chromium/cargo.md msgid "Comparing Chromium and Cargo Ecosystems" -msgstr "" +msgstr "比較 Chromium 和 Cargo 的生態系統" #: src/SUMMARY.md msgid "Policy" -msgstr "" +msgstr "政策" #: src/SUMMARY.md #, fuzzy @@ -885,28 +870,27 @@ msgstr "不安全的 Rust" #: src/SUMMARY.md src/chromium/build-rules/depending.md msgid "Depending on Rust Code from Chromium C++" -msgstr "" +msgstr "在 Chromium C++ 中使用 Rust 程式碼" #: src/SUMMARY.md src/chromium/build-rules/vscode.md msgid "Visual Studio Code" -msgstr "" +msgstr "Visual Studio Code" #: src/SUMMARY.md src/exercises/chromium/third-party.md -#, fuzzy msgid "Exercise" msgstr "練習" #: src/SUMMARY.md src/chromium/testing/rust-gtest-interop.md msgid "`rust_gtest_interop` Library" -msgstr "" +msgstr "`rust_gtest_interop` 程式庫" #: src/SUMMARY.md src/chromium/testing/build-gn.md msgid "GN Rules for Rust Tests" -msgstr "" +msgstr "Rust 測試適用的 GN 規則" #: src/SUMMARY.md src/chromium/testing/chromium-import-macro.md msgid "`chromium::import!` Macro" -msgstr "" +msgstr "`chromium::import!` 巨集" #: src/SUMMARY.md src/chromium/interoperability-with-cpp.md #, fuzzy @@ -920,7 +904,7 @@ msgstr "範例" #: src/SUMMARY.md src/chromium/interoperability-with-cpp/limitations-of-cxx.md msgid "Limitations of CXX" -msgstr "" +msgstr "CXX 的限制" #: src/SUMMARY.md src/chromium/interoperability-with-cpp/error-handling.md #, fuzzy @@ -939,69 +923,69 @@ msgstr "錯誤處理" #: src/SUMMARY.md msgid "Using CXX in Chromium" -msgstr "" +msgstr "在 Chromium 中使用 CXX" #: src/SUMMARY.md src/chromium/adding-third-party-crates.md msgid "Adding Third Party Crates" -msgstr "" +msgstr "新增第三方 Crate" #: src/SUMMARY.md msgid "Configuring Cargo.toml" -msgstr "" +msgstr "設定 Cargo.toml" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md msgid "Configuring `gnrt_config.toml`" -msgstr "" +msgstr "設定 `gnrt_config.toml`" #: src/SUMMARY.md src/chromium/adding-third-party-crates/downloading-crates.md msgid "Downloading Crates" -msgstr "" +msgstr "下載 Crate" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/generating-gn-build-rules.md msgid "Generating `gn` Build Rules" -msgstr "" +msgstr "產生 `gn` 建構規則" #: src/SUMMARY.md src/chromium/adding-third-party-crates/resolving-problems.md msgid "Resolving Problems" -msgstr "" +msgstr "解決問題" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md msgid "Build Scripts Which Generate Code" -msgstr "" +msgstr "建構用於產生程式碼的指令碼" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md msgid "Build Scripts Which Build C++ or Take Arbitrary Actions" -msgstr "" +msgstr "建構用於建立 C++ 或執行任意動作的指令碼" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/depending-on-a-crate.md msgid "Depending on a Crate" -msgstr "" +msgstr "使用 Crate" #: src/SUMMARY.md msgid "Reviews and Audits" -msgstr "" +msgstr "程式庫審查和稽核" #: src/SUMMARY.md msgid "Checking into Chromium Source Code" -msgstr "" +msgstr "提交為 Chromium 原始碼" #: src/SUMMARY.md src/chromium/adding-third-party-crates/keeping-up-to-date.md msgid "Keeping Crates Up to Date" -msgstr "" +msgstr "保持 Crate 為最新版本" #: src/SUMMARY.md msgid "Bringing It Together - Exercise" -msgstr "" +msgstr "融會貫通 - 練習題" #: src/SUMMARY.md src/exercises/chromium/solutions.md #, fuzzy msgid "Exercise Solutions" -msgstr "解決方案" +msgstr "練習題的參考答案" #: src/SUMMARY.md msgid "Bare Metal: Morning" @@ -1009,15 +993,15 @@ msgstr "裸機開發:上午" #: src/SUMMARY.md src/bare-metal/no_std.md msgid "`no_std`" -msgstr "" +msgstr "`no_std`" #: src/SUMMARY.md msgid "A Minimal Example" -msgstr "最小限度範例" +msgstr "最小限度的範例" #: src/SUMMARY.md src/bare-metal/no_std.md src/bare-metal/alloc.md msgid "`alloc`" -msgstr "" +msgstr "`alloc`" #: src/SUMMARY.md src/bare-metal/microcontrollers.md msgid "Microcontrollers" @@ -1045,7 +1029,7 @@ msgstr "型別狀態模式" #: src/SUMMARY.md src/bare-metal/microcontrollers/embedded-hal.md msgid "`embedded-hal`" -msgstr "" +msgstr "`embedded-hal`" #: src/SUMMARY.md src/bare-metal/microcontrollers/probe-rs.md #, fuzzy @@ -1127,28 +1111,27 @@ msgstr "實用的 Crate" #: src/SUMMARY.md src/bare-metal/useful-crates/zerocopy.md msgid "`zerocopy`" -msgstr "" +msgstr "`zerocopy`" #: src/SUMMARY.md src/bare-metal/useful-crates/aarch64-paging.md msgid "`aarch64-paging`" -msgstr "" +msgstr "`aarch64-paging`" #: src/SUMMARY.md src/bare-metal/useful-crates/buddy_system_allocator.md msgid "`buddy_system_allocator`" -msgstr "" +msgstr "`buddy_system_allocator`" #: src/SUMMARY.md src/bare-metal/useful-crates/tinyvec.md msgid "`tinyvec`" -msgstr "" +msgstr "`tinyvec`" #: src/SUMMARY.md src/bare-metal/useful-crates/spin.md msgid "`spin`" -msgstr "" +msgstr "`spin`" #: src/SUMMARY.md -#, fuzzy msgid "`vmbase`" -msgstr "vmbase" +msgstr "`vmbase`" #: src/SUMMARY.md msgid "RTC Driver" @@ -1276,7 +1259,7 @@ msgstr "阻占執行器" #: src/SUMMARY.md src/async/pitfalls/pin.md msgid "`Pin`" -msgstr "" +msgstr "`Pin`" #: src/SUMMARY.md src/async/pitfalls/async-traits.md msgid "Async Traits" @@ -1302,7 +1285,7 @@ msgstr "謝謝!" #: src/SUMMARY.md src/glossary.md msgid "Glossary" -msgstr "" +msgstr "詞彙解釋" #: src/SUMMARY.md msgid "Other Resources" @@ -1398,8 +1381,9 @@ msgid "" "based browsers. This includes interoperability with C++ and how to include " "third-party crates in Chromium." msgstr "" -"[Android](android.md):這是半天的課程,會說明如何針對 Android 平台開發作業 " -"(Android 開放原始碼計畫) 使用 Rust,並介紹與 C、C++ 和 Java 的互通性。" +"[Chromium](chromium.md): 是半天的深入探索課程,會說明如何在 Chromium 瀏覽器" +"中使用 Rust。這包括在 Chromium 的 `gn` 建構系統中使用 Rust,以提供與第三方程" +"式庫 (「Crate」) 和 C++ 的互通性。" #: src/index.md #, fuzzy @@ -1610,134 +1594,132 @@ msgstr "課程架構" #: src/running-the-course/course-structure.md msgid "Day 1 Morning (2 hours and 10 minutes, including breaks)" -msgstr "" +msgstr "第 1 天上午 (2 小時 10 分鐘,含休息)" #: src/running-the-course/course-structure.md msgid "[Welcome](../welcome-day-1.md) (5 minutes)" -msgstr "" +msgstr "[歡迎](../welcome-day-1.md) (5 分鐘)" #: src/running-the-course/course-structure.md msgid "[Hello, World](../hello-world.md) (15 minutes)" -msgstr "" +msgstr "[Hello, World](../hello-world.md) (15 分鐘)" #: src/running-the-course/course-structure.md msgid "[Types and Values](../types-and-values.md) (45 minutes)" -msgstr "" +msgstr "[型別和值](../types-and-values.md) (5 分鐘)" #: src/running-the-course/course-structure.md msgid "[Control Flow Basics](../control-flow-basics.md) (40 minutes)" -msgstr "" +msgstr "[基本的控制流程概念](../control-flow-basics.md) (40 分鐘)" #: src/running-the-course/course-structure.md msgid "Day 1 Afternoon (2 hours and 15 minutes, including breaks)" -msgstr "" +msgstr "第 1 天下午 (2 小時 15 分鐘,含休息)" #: src/running-the-course/course-structure.md msgid "[Tuples and Arrays](../tuples-and-arrays.md) (35 minutes)" -msgstr "" +msgstr "[元組和陣列](../tuples-and-arrays.md) (35 分鐘)" #: src/running-the-course/course-structure.md msgid "[References](../references.md) (35 minutes)" -msgstr "" +msgstr "[參照](../references.md) (35 分鐘)" #: src/running-the-course/course-structure.md msgid "[User-Defined Types](../user-defined-types.md) (50 minutes)" -msgstr "" +msgstr "[使用者定義的型別](../user-defined-types.md) (50 分鐘)" #: src/running-the-course/course-structure.md msgid "Day 2 Morning (2 hours and 50 minutes, including breaks)" -msgstr "" +msgstr "第 2 天上午 (2 小時 50 分鐘,含休息)" #: src/running-the-course/course-structure.md msgid "[Welcome](../welcome-day-2.md) (3 minutes)" -msgstr "" +msgstr "[歡迎](../welcome-day-2.md) (3 分鐘)" #: src/running-the-course/course-structure.md -#, fuzzy msgid "[Pattern Matching](../pattern-matching.md) (1 hour)" -msgstr "" -"如要進一步瞭解 Rust 中的模式,請參閱「[模式比對](../pattern-matching.md)」。" +msgstr "[模式比對](../pattern-matching.md) (1 小時)" #: src/running-the-course/course-structure.md msgid "[Methods and Traits](../methods-and-traits.md) (45 minutes)" -msgstr "" +msgstr "[方法 (methods) 和特徵 (traits)](../methods-and-traits.md) (45 分鐘)" #: src/running-the-course/course-structure.md msgid "[Generics](../generics.md) (40 minutes)" -msgstr "" +msgstr "[泛型 (generics)](../generics.md) (40 分鐘)" #: src/running-the-course/course-structure.md msgid "Day 2 Afternoon (3 hours and 10 minutes, including breaks)" -msgstr "" +msgstr "第 2 天下午 (3 小時 10 分鐘,含休息)" #: src/running-the-course/course-structure.md msgid "[Standard Library Types](../std-types.md) (1 hour and 20 minutes)" -msgstr "" +msgstr "[標準程式庫型別](../std-types.md) (1 小時 20 分鐘)" #: src/running-the-course/course-structure.md msgid "[Standard Library Traits](../std-traits.md) (1 hour and 40 minutes)" -msgstr "" +msgstr "[標準程式庫特徵](../std-traits.md) (1 小時 40 分鐘)" #: src/running-the-course/course-structure.md msgid "Day 3 Morning (2 hours and 20 minutes, including breaks)" -msgstr "" +msgstr "第 3 天上午 (2 小時 20 分鐘,含休息)" #: src/running-the-course/course-structure.md msgid "[Welcome](../welcome-day-3.md) (3 minutes)" -msgstr "" +msgstr "[歡迎](../welcome-day-3.md) (3 分鐘)" #: src/running-the-course/course-structure.md msgid "[Memory Management](../memory-management.md) (1 hour)" -msgstr "" +msgstr "[記憶體管理](../memory-management.md) (1 小時)" #: src/running-the-course/course-structure.md msgid "[Smart Pointers](../smart-pointers.md) (55 minutes)" -msgstr "" +msgstr "[智慧指標](../smart-pointers.md) (55 分鐘)" #: src/running-the-course/course-structure.md msgid "Day 3 Afternoon (2 hours and 10 minutes, including breaks)" -msgstr "" +msgstr "第 3 天下午 (2 小時 10 分鐘,含休息)" #: src/running-the-course/course-structure.md msgid "[Borrowing](../borrowing.md) (50 minutes)" -msgstr "" +msgstr "[借用](../borrowing.md) (50 分鐘)" #: src/running-the-course/course-structure.md msgid "" "[Slices and Lifetimes](../slices-and-lifetimes.md) (1 hour and 10 minutes)" -msgstr "" +msgstr "[切片 (slice) 和生命週期](../slices-and-lifetimes.md) (1 小時 10 分鐘)" #: src/running-the-course/course-structure.md msgid "Day 4 Morning (2 hours and 40 minutes, including breaks)" -msgstr "" +msgstr "第 4 天上午 (2 小時 40 分鐘,含休息)" #: src/running-the-course/course-structure.md msgid "[Welcome](../welcome-day-4.md) (3 minutes)" -msgstr "" +msgstr "[歡迎](../welcome-day-4.md) (3 分鐘)" #: src/running-the-course/course-structure.md msgid "[Iterators](../iterators.md) (45 minutes)" -msgstr "" +msgstr "[疊代器](../iterators.md) (45 分鐘)" #: src/running-the-course/course-structure.md msgid "[Modules](../modules.md) (40 minutes)" -msgstr "" +msgstr "[模組](../modules.md) (40 分鐘)" #: src/running-the-course/course-structure.md msgid "[Testing](../testing.md) (45 minutes)" -msgstr "" +msgstr "[測試](../testing.md) (45 分鐘)" #: src/running-the-course/course-structure.md msgid "Day 4 Afternoon (2 hours and 10 minutes, including breaks)" -msgstr "" +msgstr "第 4 天下午 (2 小時 10 分鐘,含休息)" #: src/running-the-course/course-structure.md msgid "[Error Handling](../error-handling.md) (55 minutes)" -msgstr "" +msgstr "[錯誤處理](../error-handling.md) (55 分鐘)" #: src/running-the-course/course-structure.md msgid "[Unsafe Rust](../unsafe-rust.md) (1 hour and 5 minutes)" -msgstr "" +msgstr "[不安全的 Rust](../unsafe-rust.md) (1 小時 5 分鐘)" #: src/running-the-course/course-structure.md msgid "Deep Dives" @@ -1753,16 +1735,15 @@ msgstr "除了為期 3 天的 Rust 基礎知識課程,我們也涵蓋更多專 #: src/running-the-course/course-structure.md #, fuzzy msgid "Rust in Android" -msgstr "Android" +msgstr "Android 中的 Rust" #: src/running-the-course/course-structure.md -#, fuzzy msgid "" "The [Rust in Android](../android.md) deep dive is a half-day course on using " "Rust for Android platform development. This includes interoperability with " "C, C++, and Java." msgstr "" -"[Android 深入探索](../android.md)是半天的課程,會說明如何針對 Android 平台開" +"[Android 中的 Rust](../android.md)是半天的課程,會說明如何針對 Android 平台開" "發作業使用 Rust,以及與 C、C++ 和 Java 的互通性。" #: src/running-the-course/course-structure.md @@ -1773,11 +1754,11 @@ msgid "" "android/` directory into the root of your AOSP checkout. This will ensure " "that the Android build system sees the `Android.bp` files in `src/android/`." msgstr "" -"您會需要進行 [Android 開放原始碼計畫檢查](https://source.android.com/docs/" -"setup/download/downloading)。請檢查[課程存放區](https://github.com/google/" -"comprehensive-rust)上相同的機器,並將 `src/android/` 目錄移至 Android 開放原" -"始碼計畫檢查的根層級。這可確保 Android 建構系統在 `src/android/` 中看到 " -"`Android.bp` 檔案。" +"您會需要檢出 (checkout) [AOSP (Android 開放原始碼專案)](https://source." +"android.com/docs/setup/download/downloading)。請檢查[課程存放區](https://" +"comprehensive-rust)上相同的機器,並將 `src/android/` 目錄移至檢出的 AOSP 根目" +"錄下。這可確保 Android 建構系統能夠在 `src/android/` 中看到 `Android.bp` 的檔" +"案。" #: src/running-the-course/course-structure.md msgid "" @@ -1792,7 +1773,7 @@ msgstr "" #: src/running-the-course/course-structure.md #, fuzzy msgid "Rust in Chromium" -msgstr "Exercism 上的 Rust" +msgstr "在 Chromium 中的 Rust" #: src/running-the-course/course-structure.md msgid "" @@ -1801,6 +1782,9 @@ msgid "" "Chromium's `gn` build system, bringing in third-party libraries (\"crates\") " "and C++ interoperability." msgstr "" +"[Chromium 中的 Rust](../chromium.md) 是半天的深入探索課程,會說明如何在 " +"Chromium 瀏覽器中使用 Rust。這包括在 Chromium 的 `gn` 建構系統中使用 Rust,以" +"提供與第三方程式庫 (「Crate」) 和 C++ 的互通性。" #: src/running-the-course/course-structure.md msgid "" @@ -1808,6 +1792,9 @@ msgid "" "[recommended](../chromium/setup.md) for speed but any build will work. " "Ensure that you can run the Chromium browser that you've built." msgstr "" +"您需具備 Chromium 的建構知識。我們[建議](../chromium/setup.md)使用偵錯元件版" +"本來加快執行速度,但其他版本也適用。請確保您能夠執行所建構的 Chromium 瀏覽" +"器。" #: src/running-the-course/course-structure.md #, fuzzy @@ -1931,6 +1918,12 @@ msgid "" "github.com/superwhd), [@SketchK](https://github.com/SketchK), and [@nodmp]" "(https://github.com/nodmp)." msgstr "" +"[中文 (簡體)](https://google.github.io/comprehensive-rust/zh-CN/)譯者:" +"[@suetfei](https://github.com/suetfei)、[@wnghl](https://github.com/wnghl)、" +"[@anlunx](https://github.com/anlunx)、[@kongy](https://github.com/kongy)、" +"[@noahdragon](https://github.com/noahdragon、[@superwhd](https://github.com/" +"superwhd)、[@SketchK](https://github.com/SketchK) 和 [@nodmp](https://" +"github) .com/nodmp)。" #: src/running-the-course/translations.md #, fuzzy @@ -1941,9 +1934,12 @@ msgid "" "github.com/kuanhungchen), and [@johnathan79717](https://github.com/" "johnathan79717)." msgstr "" -"[韓文](https://google.github.io/comprehensive-rust/ko/)譯者:[@keispace]" -"(https://github.com/keispace)、[@jiyongp](https://github.com/jiyongp) 和 " -"[@jooyunghan](https://github.com/jooyunghan)。" +"[中文 (簡體)](https://google.github.io/comprehensive-rust/zh-CN/)譯者:" +"[@suetfei](https://github.com/suetfei)、[@wnghl](https://github.com/wnghl)、" +"[@anlunx](https://github.com/anlunx)、[@kongy](https://github.com/kongy)、" +"[@noahdragon](https://github.com/noahdragon、[@superwhd](https://github.com/" +"superwhd)、[@SketchK](https://github.com/SketchK) 和 [@nodmp](https://" +"github) .com/nodmp)。" #: src/running-the-course/translations.md #, fuzzy @@ -2075,6 +2071,12 @@ msgid "" "analyzer.github.io/manual.html#vimneovim), and many others. There is also a " "different IDE available called [RustRover](https://www.jetbrains.com/rust/)." msgstr "" +"安裝 Rust 後,您應設定編輯器或 IDE,以便與 Rust 搭配使用。為此,大多數編輯器" +"會與 [rust-analyzer](https://rust-analyzer.github.io/) 通訊,後者提供適用於 " +"[VS Code](https://code.visualstudio.com/)、[Emacs](https://rust-analyzer." +"github.io/manual.html#emacs)、[Vim/Neovim](https://rust-analyzer.github.io/" +"manual.html#vimneovim) 等的自動完成和跳至定義功能。此外,您也可以使用稱做 " +"[RustRover](https://www.jetbrains.com/rust/) 的不同 IDE。" #: src/cargo.md #, fuzzy @@ -2273,7 +2275,7 @@ msgstr "本課程的程式碼區塊皆完全為互動式:" #: src/cargo/code-samples.md src/cargo/running-locally.md msgid "\"Edit me!\"" -msgstr "" +msgstr "\"Edit me!\"" #: src/cargo/code-samples.md msgid "You can use " @@ -2417,11 +2419,11 @@ msgstr "型別推斷" #: src/welcome-day-1.md msgid "Control flow constructs: loops, conditionals, and so on." -msgstr "" +msgstr "控制流程結構:迴圈、條件式等。" #: src/welcome-day-1.md msgid "User-defined types: structs and enums." -msgstr "" +msgstr "使用者定義的型別:結構體和列舉。" #: src/welcome-day-1.md msgid "Pattern matching: destructuring enums, structs, and arrays." @@ -2430,37 +2432,37 @@ msgstr "模式配對:解構列舉、結構和陣列。" #: src/welcome-day-1.md src/welcome-day-2.md src/welcome-day-3.md #: src/welcome-day-4.md msgid "Schedule" -msgstr "" +msgstr "課程時間表" #: src/welcome-day-1.md src/welcome-day-1-afternoon.md src/welcome-day-2.md #: src/welcome-day-2-afternoon.md src/welcome-day-3.md #: src/welcome-day-3-afternoon.md src/welcome-day-4.md #: src/welcome-day-4-afternoon.md msgid "In this session:" -msgstr "" +msgstr "課程內容:" #: src/welcome-day-1.md msgid "[Welcome](./welcome-day-1.md) (5 minutes)" -msgstr "" +msgstr "[歡迎](./welcome-day-1.md) (5 分鐘)" #: src/welcome-day-1.md msgid "[Hello, World](./hello-world.md) (15 minutes)" -msgstr "" +msgstr "[Hello, World](./hello-world.md) (15 分鐘)" #: src/welcome-day-1.md msgid "[Types and Values](./types-and-values.md) (45 minutes)" -msgstr "" +msgstr "[型別和值](./types-and-values.md) (45 分鐘)" #: src/welcome-day-1.md msgid "[Control Flow Basics](./control-flow-basics.md) (40 minutes)" -msgstr "" +msgstr "[基本的控制流程概念](./control-flow-basics.md) (40 分鐘)" #: src/welcome-day-1.md src/welcome-day-3-afternoon.md #: src/welcome-day-4-afternoon.md msgid "" "Including 10 minute breaks, this session should take about 2 hours and 10 " "minutes" -msgstr "" +msgstr "加上 10 分鐘的休息時間,這個課程大約需要 2 小時 10 分鐘" #: src/welcome-day-1.md msgid "Please remind the students that:" @@ -2509,6 +2511,8 @@ msgid "" "should have immediate parallels in other languages. The more advanced parts " "of Rust come on the subsequent days." msgstr "" +"第一天的規畫是說明 Rust 中能夠直接對應到其他語言的「基礎」概念。後續幾天則會" +"介紹更進階的部分。" #: src/welcome-day-1.md msgid "" @@ -2518,6 +2522,9 @@ msgid "" "The times listed here are a suggestion in order to keep the course on " "schedule. Feel free to be flexible and adjust as necessary!" msgstr "" +"如果您是在教室授課,就很適合參考這裡的時間表。請注意,每個主題結束後都有練" +"習,然後才是休息時間。請規劃在休息後講解練習的解決方案。此處列出的時程建議是" +"要確保課程進度。您可以視需要彈性調整!" #: src/hello-world.md src/types-and-values.md src/control-flow-basics.md #: src/tuples-and-arrays.md src/references.md src/user-defined-types.md @@ -2527,23 +2534,23 @@ msgstr "" #: src/iterators.md src/modules.md src/testing.md src/error-handling.md #: src/unsafe-rust.md msgid "In this segment:" -msgstr "" +msgstr "主題內容:" #: src/hello-world.md msgid "[What is Rust?](./hello-world/what-is-rust.md) (10 minutes)" -msgstr "" +msgstr "[什麼是 Rust?](./hello-world/what-is-rust.md) (10 分鐘)" #: src/hello-world.md msgid "[Benefits of Rust](./hello-world/benefits.md) (3 minutes)" -msgstr "" +msgstr "[Rust 的優點](./hello-world/benefits.md) (3 分鐘)" #: src/hello-world.md msgid "[Playground](./hello-world/playground.md) (2 minutes)" -msgstr "" +msgstr "[Playground](./hello-world/playground.md) (2 分鐘)" #: src/hello-world.md msgid "This segment should take about 15 minutes" -msgstr "" +msgstr "講解這個主題大約需要 15 分鐘" #: src/hello-world/what-is-rust.md msgid "" @@ -2634,7 +2641,7 @@ msgstr "Rust 的幾個獨特賣點如下:" msgid "" "_Compile time memory safety_ - whole classes of memory bugs are prevented at " "compile time" -msgstr "" +msgstr "「編譯期的記憶體安全性」 - 在編譯期間就能避免各類記憶體錯誤" #: src/hello-world/benefits.md msgid "No uninitialized variables." @@ -2669,6 +2676,8 @@ msgid "" "_No undefined runtime behavior_ - what a Rust statement does is never left " "unspecified" msgstr "" +"「不會出現未定義的執行階段行為 (undefined runtime behavior)」 - Rust 陳述式的" +"行為一律會有定義" #: src/hello-world/benefits.md msgid "Array access is bounds checked." @@ -2682,7 +2691,7 @@ msgstr "整數溢位的行為是明確的 (恐慌或迴繞)。" msgid "" "_Modern language features_ - as expressive and ergonomic as higher-level " "languages" -msgstr "" +msgstr "「現代化的語言特徵」 - 具表現力且符合人因工程學的高階語言" #: src/hello-world/benefits.md msgid "Enums and pattern matching." @@ -2720,7 +2729,7 @@ msgstr "卓越的語言伺服器通訊協定支援。" msgid "" "Do not spend much time here. All of these points will be covered in more " "depth later." -msgstr "" +msgstr "這裡不要花太多時間。這幾點稍後全都會深入介紹。" #: src/hello-world/benefits.md msgid "" @@ -2759,12 +2768,15 @@ msgid "" "this course. Try running the \"hello-world\" program it starts with. It " "comes with a few handy features:" msgstr "" +"[Rust Playground](https://play.rust-lang.org/) 支援以簡便方式執行精簡的 Rust " +"程式,也是本課程中範例和練習的基礎。不妨試著執行 Rust Playground 開頭的" +"「hello-world」程式。Playground 兼具以下幾項便利功能:" #: src/hello-world/playground.md msgid "" "Under \"Tools\", use the `rustfmt` option to format your code in the " "\"standard\" way." -msgstr "" +msgstr "在「Tools」下方點選「`rustfmt`」選項,以「標準」方式設定程式碼格式。" #: src/hello-world/playground.md msgid "" @@ -2772,12 +2784,15 @@ msgid "" "checks, less optimization) and Release (fewer runtime checks, lots of " "optimization). These are accessible under \"Debug\" at the top." msgstr "" +"Rust 有兩個主要的「設定檔」可產生程式碼,分別是「Debug」(加強執行階段檢查,最" +"佳化程度較低) 和「Release」(減少執行階段檢查,大規模最佳化)。這些設定檔位於頂" +"端的「Debug」下方。" #: src/hello-world/playground.md msgid "" "If you're interested, use \"ASM\" under \"...\" to see the generated " "assembly code." -msgstr "" +msgstr "感興趣的話,不妨點選「...」下的「ASM」查看產生的組語程式碼。" #: src/hello-world/playground.md msgid "" @@ -2787,39 +2802,42 @@ msgid "" "students who want to know more about Rust's optimizations or generated " "assembly." msgstr "" +"學員準備休息時,請鼓勵他們開啟 Playground 略微試驗一下。在剩餘的課堂時間,建" +"議他們持續開啟 Playground 分頁嘗試操作。如果學生程度較高,想進一步瞭解 Rust " +"的最佳化作業或產生的組語,就特別適合採用這個授課方式。" #: src/types-and-values.md msgid "[Hello, World](./types-and-values/hello-world.md) (5 minutes)" -msgstr "" +msgstr "[Hello, World](./types-and-values/hello-world.md) (5 分鐘)" #: src/types-and-values.md msgid "[Variables](./types-and-values/variables.md) (5 minutes)" -msgstr "" +msgstr "[變數](./types-and-values/variables.md) (5 分鐘)" #: src/types-and-values.md msgid "[Values](./types-and-values/values.md) (5 minutes)" -msgstr "" +msgstr "[值](./types-and-values/values.md) (5 分鐘)" #: src/types-and-values.md msgid "[Arithmetic](./types-and-values/arithmetic.md) (3 minutes)" -msgstr "" +msgstr "[算術](./types-and-values/arithmetic.md) (3 分鐘)" #: src/types-and-values.md msgid "[Strings](./types-and-values/strings.md) (5 minutes)" -msgstr "" +msgstr "[字串](./types-and-values/strings.md) (5 分鐘)" #: src/types-and-values.md msgid "[Type Inference](./types-and-values/inference.md) (3 minutes)" -msgstr "" +msgstr "[型別推斷](./types-and-values/inference.md) (3 分鐘)" #: src/types-and-values.md msgid "[Exercise: Fibonacci](./types-and-values/exercise.md) (15 minutes)" -msgstr "" +msgstr "[練習:費波那契數列](./types-and-values/exercise.md) (15 分鐘)" #: src/types-and-values.md src/methods-and-traits.md src/iterators.md #: src/testing.md msgid "This segment should take about 45 minutes" -msgstr "" +msgstr "講解這個主題大約需要 45 分鐘" #: src/types-and-values/hello-world.md msgid "" @@ -2829,7 +2847,7 @@ msgstr "我們直接來看看最簡單的 Rust 程式吧,也就是經典的 He #: src/types-and-values/hello-world.md msgid "\"Hello 🌍!\"" -msgstr "" +msgstr "\"Hello 🌍!\"" #: src/types-and-values/hello-world.md msgid "What you see:" @@ -2861,6 +2879,8 @@ msgid "" "see a ton of it over the next four days so we start small with something " "familiar." msgstr "" +"我們會藉由這張投影片,試著讓學生熟悉 Rust 程式碼。在接下來的四天裡,他們會大" +"量接觸到這些內容,所以我們得從他們熟悉的小地方著手。" #: src/types-and-values/hello-world.md msgid "" @@ -2915,19 +2935,23 @@ msgstr "Rust 可透過靜態型別確保型別安全。根據預設,變數綁 #: src/types-and-values/variables.md src/control-flow-basics/loops/for.md #: src/control-flow-basics/blocks-and-scopes.md msgid "\"x: {x}\"" -msgstr "" +msgstr "\"x: {x}\"" #: src/types-and-values/variables.md msgid "" "// x = 20;\n" " // println!(\"x: {x}\");\n" msgstr "" +"// x = 20;\n" +" // println!(\"x: {x}\");\n" #: src/types-and-values/variables.md msgid "" "Uncomment the `x = 20` to demonstrate that variables are immutable by " "default. Add the `mut` keyword to allow changes." msgstr "" +"取消註解 `x = 20`,證明變數預設為不可變動。如要允許變更,請加入 `mut` 關鍵" +"字。" #: src/types-and-values/variables.md msgid "" @@ -2935,12 +2959,14 @@ msgid "" "time, but type inference (covered later) allows the programmer to omit it in " "many cases." msgstr "" +"這裡的 `i32` 是變數型別。這是編譯器必須在編譯期間掌握的資訊,但透過型別推斷 " +"(稍後會說明),程式設計師在許多情況下都能省略其型別宣告。" #: src/types-and-values/values.md msgid "" "Here are some basic built-in types, and the syntax for literal values of " "each type." -msgstr "" +msgstr "以下列出一些基本的內建型別,以及適用於各型的字面常量的語法。" #: src/types-and-values/values.md src/unsafe-rust/exercise.md msgid "Types" @@ -3045,7 +3071,7 @@ msgstr "" #: src/types-and-values/arithmetic.md msgid "\"result: {}\"" -msgstr "" +msgstr "\"result: {}\"" #: src/types-and-values/arithmetic.md msgid "" @@ -3053,10 +3079,12 @@ msgid "" "meaning should be clear: it takes three integers, and returns an integer. " "Functions will be covered in more detail later." msgstr "" +"這是我們第一次看到 `main` 以外的函式,但此函式的含意應該很清楚,那就是它需要" +"三個整數,且會傳回整數。我們稍後會詳細說明函式的細節。" #: src/types-and-values/arithmetic.md msgid "Arithmetic is very similar to other languages, with similar precedence." -msgstr "" +msgstr "在其他語言中,算數的方法非常相似,運算的優先順序也雷同。" #: src/types-and-values/arithmetic.md msgid "" @@ -3064,6 +3092,8 @@ msgid "" "actually undefined, and might do different things on different platforms or " "compilers. In Rust, it's defined." msgstr "" +"那麼整數溢位現象呢?在 C 和 C++ 中,「有號」整數的溢位現象實際上並未定義,而" +"且在不同的平台或編譯器上可能有不同行為。但在 Rust 中,整數溢位會經過定義。" #: src/types-and-values/arithmetic.md msgid "" @@ -3073,18 +3103,25 @@ msgid "" "with method syntax, e.g., `(a * b).saturating_add(b * c).saturating_add(c * " "a)`." msgstr "" +"將 `i32` 變更為 `i16`,即可查看整數溢位現象,這在偵錯版本中會造成恐慌 " +"(checked),並納入發布子版本中。此外,Rust 還提供溢位、飽和與進位等其他選項," +"可透過方法語法存取,例如 `(a * b).saturating_add(b * c).saturating_add(c * " +"a)`。" #: src/types-and-values/arithmetic.md msgid "" "In fact, the compiler will detect overflow of constant expressions, which is " "why the example requires a separate function." msgstr "" +"事實上,編譯器會偵測常數運算式的溢位,這也是本例中需要另一個函式的原因。" #: src/types-and-values/strings.md msgid "" "Rust has two types to represent strings, both of which will be covered in " "more depth later. Both _always_ store UTF-8 encoded strings." msgstr "" +"Rust 用來代表字串的型別有兩種,稍後會深入介紹。兩者「一律」都儲存 UTF-8 編碼" +"字串。" #: src/types-and-values/strings.md #, fuzzy @@ -3093,49 +3130,53 @@ msgstr "`String` 是可變動的字串緩衝區。" #: src/types-and-values/strings.md msgid "`&str` - a read-only string. String literals have this type." -msgstr "" +msgstr "`&str` - 這是唯讀字串。字串常量會採用此型別。" #: src/types-and-values/strings.md msgid "\"Greetings\"" -msgstr "" +msgstr "\"Greetings\"" #: src/types-and-values/strings.md msgid "\"🪐\"" -msgstr "" +msgstr "\"🪐\"" #: src/types-and-values/strings.md msgid "\", \"" -msgstr "" +msgstr "\", \"" #: src/types-and-values/strings.md msgid "\"final sentence: {}\"" -msgstr "" +msgstr "\"final sentence: {}\"" #: src/types-and-values/strings.md #: src/methods-and-traits/traits/associated-types.md #: src/async/control-flow/join.md msgid "\"{:?}\"" -msgstr "" +msgstr "\"{:?}\"" #: src/types-and-values/strings.md msgid "//println!(\"{:?}\", &sentence[12..13]);\n" -msgstr "" +msgstr "//println!(\"{:?}\", &sentence[12..13]);\n" #: src/types-and-values/strings.md msgid "" "This slide introduces strings. Everything here will be covered in more depth " "later, but this is enough for subsequent slides and exercises to use strings." msgstr "" +"這張投影片用於介紹字串。我們稍後會深入介紹此處提及的所有內容,但目前這些就已" +"足夠用於後續的投影片和使用字串的練習題中。" #: src/types-and-values/strings.md msgid "Invalid UTF-8 in a string is UB, and this not allowed in safe Rust." -msgstr "" +msgstr "字串中的無效 UTF-8 屬於 UB,而安全的 Rust 環境不允許此行為。" #: src/types-and-values/strings.md msgid "" "`String` is a user-defined type with a constructor (`::new()`) and methods " "like `s.push_str(..)`." msgstr "" +"`String` 是使用者定義的型別,具備建構函式 (`::new()`) 和 `s.push_str(..)` 等" +"方法。" #: src/types-and-values/strings.md msgid "" @@ -3143,6 +3184,8 @@ msgid "" "references later, so for now just think of `&str` as a unit meaning \"a read-" "only string\"." msgstr "" +"`&str` 中的 `&` 表示這是參照。我們稍後會講解何謂參照,因此現在只需將 `&str` " +"視為代表「唯讀字串」的單位就行了。" #: src/types-and-values/strings.md msgid "" @@ -3150,6 +3193,8 @@ msgid "" "`12..13` does not end on a character boundary, so the program panics. Adjust " "it to a range that does, based on the error message." msgstr "" +"被註解掉的那行程式碼會按照位元組位置建立索引到字串中。`12..13` 的結尾不是字元" +"邊界,因此程式會發生恐慌。請根據錯誤訊息,將其調整至結尾為字元邊界的範圍。" #: src/types-and-values/strings.md msgid "" @@ -3195,10 +3240,12 @@ msgid "" "`i32`. This sometimes appears as `{integer}` in error messages. Similarly, " "floating-point literals default to `f64`." msgstr "" +"當整數常量的型別無任何限制時,Rust 會預設使用 `i32`。這有時會在錯誤訊息中顯示" +"為「{integer}」。同樣地,浮點常量會預設為 `f64`。" #: src/types-and-values/inference.md msgid "// ERROR: no implementation for `{float} == {integer}`\n" -msgstr "" +msgstr "// ERROR: no implementation for `{float} == {integer}`\n" #: src/types-and-values/exercise.md msgid "" @@ -3206,16 +3253,19 @@ msgid "" "Fibonacci number is calculated recursively as the sum of the n-1'th and " "n-2'th Fibonacci numbers." msgstr "" +"第一和第二個費波那契數都是 `1`。當 n>2 時,第 n 個費波那契數會以遞迴方式計算" +"為第 n-1 和第 n-2 個費波那契數的和。" #: src/types-and-values/exercise.md msgid "" "Write a function `fib(n)` that calculates the n'th Fibonacci number. When " "will this function panic?" msgstr "" +"編寫用於計算第 n 個費波那契數的 `fib(n)` 函式。這個函式何時會發生恐慌?" #: src/types-and-values/exercise.md msgid "// The base case.\n" -msgstr "" +msgstr "// The base case.\n" #: src/types-and-values/exercise.md src/control-flow-basics/exercise.md #, fuzzy @@ -3224,46 +3274,49 @@ msgstr "實作" #: src/types-and-values/exercise.md msgid "// The recursive case.\n" -msgstr "" +msgstr "// The recursive case.\n" #: src/types-and-values/exercise.md src/types-and-values/solution.md msgid "\"fib(n) = {}\"" -msgstr "" +msgstr "\"fib(n) = {}\"" #: src/control-flow-basics.md +#, fuzzy msgid "[if Expressions](./control-flow-basics/if.md) (4 minutes)" -msgstr "" +msgstr "[巨集](./control-flow-basics/macros.md) (2 分鐘)" #: src/control-flow-basics.md msgid "[Loops](./control-flow-basics/loops.md) (5 minutes)" -msgstr "" +msgstr "[迴圈](./control-flow-basics/loops.md) (5 分鐘)" #: src/control-flow-basics.md msgid "" "[break and continue](./control-flow-basics/break-continue.md) (4 minutes)" -msgstr "" +msgstr "[break 和 continue](./control-flow-basics/break-continue.md) (4 分鐘)" #: src/control-flow-basics.md msgid "" "[Blocks and Scopes](./control-flow-basics/blocks-and-scopes.md) (5 minutes)" msgstr "" +"[區塊 (block) 和範疇 (scope)](./control-flow-basics/blocks-and-scopes.md) (5 " +"分鐘)" #: src/control-flow-basics.md msgid "[Functions](./control-flow-basics/functions.md) (3 minutes)" -msgstr "" +msgstr "[函式](./control-flow-basics/functions.md) (3 分鐘)" #: src/control-flow-basics.md msgid "[Macros](./control-flow-basics/macros.md) (2 minutes)" -msgstr "" +msgstr "[巨集](./control-flow-basics/macros.md) (2 分鐘)" #: src/control-flow-basics.md msgid "" "[Exercise: Collatz Sequence](./control-flow-basics/exercise.md) (15 minutes)" -msgstr "" +msgstr "[練習:考拉茲序列](./control-flow-basics/exercise.md) (15 分鐘)" #: src/control-flow-basics.md src/generics.md src/modules.md msgid "This segment should take about 40 minutes" -msgstr "" +msgstr "講解這個主題大約需要 40 分鐘" #: src/control-flow-basics/if.md msgid "`if` expressions" @@ -3279,15 +3332,15 @@ msgstr "" #: src/control-flow-basics/if.md msgid "\"zero!\"" -msgstr "" +msgstr "\"zero!\"" #: src/control-flow-basics/if.md msgid "\"biggish\"" -msgstr "" +msgstr "\"biggish\"" #: src/control-flow-basics/if.md msgid "\"huge\"" -msgstr "" +msgstr "\"huge\"" #: src/control-flow-basics/if.md msgid "" @@ -3299,15 +3352,15 @@ msgstr "" #: src/control-flow-basics/if.md msgid "\"small\"" -msgstr "" +msgstr "\"small\"" #: src/control-flow-basics/if.md msgid "\"large\"" -msgstr "" +msgstr "\"large\"" #: src/control-flow-basics/if.md msgid "\"number size: {}\"" -msgstr "" +msgstr "\"number size: {}\"" #: src/control-flow-basics/if.md #, fuzzy @@ -3325,18 +3378,18 @@ msgid "" "separate it from the next statement. Remove the `;` before `println!` to see " "the compiler error." msgstr "" +"在運算式中使用 `if` 時,運算式須有 `;`,才能與下一個陳述式分隔。移除 " +"`println!` 前的 `;` 即可查看編譯器錯誤。" #: src/control-flow-basics/loops.md msgid "There are three looping keywords in Rust: `while`, `loop`, and `for`:" -msgstr "" +msgstr "Rust 中有三個迴圈關鍵字:`while`、`loop` 和 `for`:" #: src/control-flow-basics/loops.md -#, fuzzy msgid "`while`" -msgstr "`while` 迴圈" +msgstr "`while`" #: src/control-flow-basics/loops.md -#, fuzzy msgid "" "The [`while` keyword](https://doc.rust-lang.org/reference/expressions/loop-" "expr.html#predicate-loops) works much like in other languages, executing the " @@ -3347,7 +3400,7 @@ msgstr "" #: src/control-flow-basics/loops.md msgid "\"Final x: {x}\"" -msgstr "" +msgstr "\"Final x: {x}\"" #: src/control-flow-basics/loops/for.md #, fuzzy @@ -3360,7 +3413,7 @@ msgstr "" #: src/control-flow-basics/loops/for.md msgid "\"elem: {elem}\"" -msgstr "" +msgstr "\"elem: {elem}\"" #: src/control-flow-basics/loops/for.md msgid "" @@ -3374,6 +3427,8 @@ msgid "" "Note that the `for` loop only iterates to `4`. Show the `1..=5` syntax for " "an inclusive range." msgstr "" +"請注意,`for` 迴圈只會疊代至 `4`。您可以示範 `1..=5` 語法,這代表含頭尾的範" +"圍。" #: src/control-flow-basics/loops/loop.md #, fuzzy @@ -3386,7 +3441,7 @@ msgstr "" #: src/control-flow-basics/loops/loop.md msgid "\"{i}\"" -msgstr "" +msgstr "\"{i}\"" #: src/control-flow-basics/break-continue.md msgid "" @@ -3453,7 +3508,7 @@ msgstr "" #: src/control-flow-basics/blocks-and-scopes.md msgid "\"y: {y}\"" -msgstr "" +msgstr "\"y: {y}\"" #: src/control-flow-basics/blocks-and-scopes.md #, fuzzy @@ -3472,7 +3527,7 @@ msgstr "" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "A variable's scope is limited to the enclosing block." -msgstr "" +msgstr "變數的有效範疇受限於封閉其變數的區塊。" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" @@ -3482,30 +3537,32 @@ msgstr "您可以遮蔽變量,包括來自外部範圍以及來自同一範圍 #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"before: {a}\"" -msgstr "" +msgstr "\"before: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md #: src/std-traits/from-and-into.md src/slices-and-lifetimes/solution.md msgid "\"hello\"" -msgstr "" +msgstr "\"hello\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"inner scope: {a}\"" -msgstr "" +msgstr "\"inner scope: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"shadowed in inner scope: {a}\"" -msgstr "" +msgstr "\"shadowed in inner scope: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"after: {a}\"" -msgstr "" +msgstr "\"after: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" "Show that a variable's scope is limited by adding a `b` in the inner block " "in the last example, and then trying to access it outside that block." msgstr "" +"請說明變數的範疇受到限制,做法是在最後一個範例的內部區塊中新增 `b`,然後嘗試" +"在該區塊外部存取 `b`。" #: src/control-flow-basics/blocks-and-scopes/scopes.md #, fuzzy @@ -3564,6 +3621,7 @@ msgid "" "Always takes a fixed number of parameters. Default arguments are not " "supported. Macros can be used to support variadic functions." msgstr "" +"請一律採用定量參數。系統不支援預設引數。如要支援可變參數函式,請使用巨集。" #: src/control-flow-basics/functions.md #, fuzzy @@ -3578,6 +3636,8 @@ msgid "" "variable number of arguments. They are distinguished by a `!` at the end. " "The Rust standard library includes an assortment of useful macros." msgstr "" +"巨集會在編譯期間展開為 Rust 程式碼,並可接受可變數量的引數。我們可透過結尾的 " +"`!` 來辨別巨集。Rust 標準程式庫包含各式實用巨集。" #: src/control-flow-basics/macros.md #, fuzzy @@ -3593,26 +3653,27 @@ msgid "" "`format!(format, ..)` works just like `println!` but returns the result as a " "string." msgstr "" +"`format!(format, ..)` 的運作方式與 `println!` 類似,但會以字串形式傳回結果。" #: src/control-flow-basics/macros.md msgid "`dbg!(expression)` logs the value of the expression and returns it." -msgstr "" +msgstr "`dbg!(expression)` 會記錄並傳回運算式的值。" #: src/control-flow-basics/macros.md msgid "" "`todo!()` marks a bit of code as not-yet-implemented. If executed, it will " "panic." -msgstr "" +msgstr "`todo!()` 可將一小段程式碼標示為尚未實作,但執行後會發生恐慌。" #: src/control-flow-basics/macros.md msgid "" "`unreachable!()` marks a bit of code as unreachable. If executed, it will " "panic." -msgstr "" +msgstr "`unavailable!()` 可將一小段程式碼標示為無法存取,但執行後會發生恐慌。" #: src/control-flow-basics/macros.md msgid "\"{n}! = {}\"" -msgstr "" +msgstr "\"{n}! = {}\"" #: src/control-flow-basics/macros.md msgid "" @@ -3620,180 +3681,185 @@ msgid "" "how to use them. Why they are defined as macros, and what they expand to, is " "not especially critical." msgstr "" +"本節的重點在於,上述的便利性不僅常見,而且確實存在,學員需瞭解如何運用。至於" +"為何將便利性定義為巨集,以及巨集展開後會變成什麼內容,則沒有那麼重要。" #: src/control-flow-basics/macros.md msgid "" "The course does not cover defining macros, but a later section will describe " "use of derive macros." -msgstr "" +msgstr "本課程不會探討如何定義巨集,但後續章節將說明衍生巨集的用法。" #: src/control-flow-basics/exercise.md msgid "" "The [Collatz Sequence](https://en.wikipedia.org/wiki/Collatz_conjecture) is " "defined as follows, for an arbitrary n" msgstr "" +"[考拉茲序列](https://zh.wikipedia.org/wiki/" +"%E8%80%83%E6%8B%89%E5%85%B9%E7%8C%9C%E6%83%B3)的定義如下,對於任意大於零的數 " +"n" #: src/control-flow-basics/exercise.md msgid "1" -msgstr "" +msgstr "1" #: src/control-flow-basics/exercise.md msgid " greater than zero:" -msgstr "" +msgstr " 大於零:" #: src/control-flow-basics/exercise.md msgid "If _n" -msgstr "" +msgstr "如果 _n" #: src/control-flow-basics/exercise.md msgid "i" -msgstr "" +msgstr "i" #: src/control-flow-basics/exercise.md msgid "_ is 1, then the sequence terminates at _n" -msgstr "" +msgstr "_ 是 1,那麼序列會終止在 _n " #: src/control-flow-basics/exercise.md msgid "_." -msgstr "" +msgstr "_。" #: src/control-flow-basics/exercise.md msgid "_ is even, then _n" -msgstr "" +msgstr "_ 是偶數,那麼 _n" #: src/control-flow-basics/exercise.md msgid "i+1" -msgstr "" +msgstr "i+1" #: src/control-flow-basics/exercise.md msgid " = n" -msgstr "" +msgstr " = n" #: src/control-flow-basics/exercise.md msgid " / 2_." -msgstr "" +msgstr " / 2_。" #: src/control-flow-basics/exercise.md msgid "_ is odd, then _n" -msgstr "" +msgstr "_ 是奇數,那麼 _n" #: src/control-flow-basics/exercise.md msgid " = 3 * n" -msgstr "" +msgstr " = 3 * n" #: src/control-flow-basics/exercise.md msgid " + 1_." -msgstr "" +msgstr " + 1_。" #: src/control-flow-basics/exercise.md msgid "For example, beginning with _n" -msgstr "" +msgstr "假設我們從 _n" #: src/control-flow-basics/exercise.md msgid "_ = 3:" -msgstr "" +msgstr "_ = 3 開始:" #: src/control-flow-basics/exercise.md msgid "3 is odd, so _n" -msgstr "" +msgstr "3 是奇數,所以 _n" #: src/control-flow-basics/exercise.md msgid "2" -msgstr "" +msgstr "2" #: src/control-flow-basics/exercise.md msgid "_ = 3 * 3 + 1 = 10;" -msgstr "" +msgstr "_ = 3 * 3 + 1 = 10;" #: src/control-flow-basics/exercise.md msgid "10 is even, so _n" -msgstr "" +msgstr "10 是偶數,所以 _n" #: src/control-flow-basics/exercise.md src/bare-metal/aps/better-uart.md msgid "3" -msgstr "" +msgstr "3" #: src/control-flow-basics/exercise.md msgid "_ = 10 / 2 = 5;" -msgstr "" +msgstr "_ = 10 / 2 = 5;" #: src/control-flow-basics/exercise.md msgid "5 is odd, so _n" -msgstr "" +msgstr "5 是奇數,所以 _n" #: src/control-flow-basics/exercise.md src/bare-metal/aps/better-uart.md msgid "4" -msgstr "" +msgstr "4" #: src/control-flow-basics/exercise.md msgid "_ = 3 * 5 + 1 = 16;" -msgstr "" +msgstr "_ = 3 * 5 + 1 = 16;" #: src/control-flow-basics/exercise.md msgid "16 is even, so _n" -msgstr "" +msgstr "16 是偶數,所以 _n" #: src/control-flow-basics/exercise.md msgid "5" -msgstr "" +msgstr "5" #: src/control-flow-basics/exercise.md msgid "_ = 16 / 2 = 8;" -msgstr "" +msgstr "_ = 16 / 2 = 8;" #: src/control-flow-basics/exercise.md msgid "8 is even, so _n" -msgstr "" +msgstr "8 是偶數,所以 _n" #: src/control-flow-basics/exercise.md src/bare-metal/aps/better-uart.md msgid "6" -msgstr "" +msgstr "6" #: src/control-flow-basics/exercise.md msgid "_ = 8 / 2 = 4;" -msgstr "" +msgstr "_ = 8 / 2 = 4;" #: src/control-flow-basics/exercise.md msgid "4 is even, so _n" -msgstr "" +msgstr "4 是偶數,所以 _n" #: src/control-flow-basics/exercise.md msgid "7" -msgstr "" +msgstr "7" #: src/control-flow-basics/exercise.md msgid "_ = 4 / 2 = 2;" -msgstr "" +msgstr "_ = 4 / 2 = 2;" #: src/control-flow-basics/exercise.md msgid "2 is even, so _n" -msgstr "" +msgstr "2 是偶數,所以 _n" #: src/control-flow-basics/exercise.md src/bare-metal/aps/better-uart.md msgid "8" -msgstr "" +msgstr "8" #: src/control-flow-basics/exercise.md msgid "_ = 1; and" -msgstr "" +msgstr "_ = 1;之後" #: src/control-flow-basics/exercise.md msgid "the sequence terminates." -msgstr "" +msgstr "序列就會終止。" #: src/control-flow-basics/exercise.md msgid "" "Write a function to calculate the length of the collatz sequence for a given " "initial `n`." -msgstr "" +msgstr "給定初始 `n`,請編寫一個函式來計算考拉茲序列的長度。" #: src/control-flow-basics/exercise.md src/control-flow-basics/solution.md msgid "/// Determine the length of the collatz sequence beginning at `n`.\n" -msgstr "" +msgstr "/// Determine the length of the collatz sequence beginning at `n`.\n" #: src/control-flow-basics/solution.md src/concurrency/scoped-threads.md msgid "\"Length: {}\"" -msgstr "" +msgstr "\"Length: {}\"" #: src/welcome-day-1-afternoon.md src/welcome-day-2-afternoon.md #: src/welcome-day-3-afternoon.md src/welcome-day-4-afternoon.md @@ -3803,47 +3869,48 @@ msgstr "歡迎" #: src/welcome-day-1-afternoon.md msgid "[Tuples and Arrays](./tuples-and-arrays.md) (35 minutes)" -msgstr "" +msgstr "[元組和陣列](./tuples-and-arrays.md) (35 分鐘)" #: src/welcome-day-1-afternoon.md msgid "[References](./references.md) (35 minutes)" -msgstr "" +msgstr "[參照](./references.md) (35 分鐘)" #: src/welcome-day-1-afternoon.md msgid "[User-Defined Types](./user-defined-types.md) (50 minutes)" -msgstr "" +msgstr "[使用者定義的型別](./user-defined-types.md) (50 分鐘)" #: src/welcome-day-1-afternoon.md msgid "" "Including 10 minute breaks, this session should take about 2 hours and 15 " "minutes" -msgstr "" +msgstr "加上 10 分鐘的休息時間,這個課程大約需要 2 小時 15 分鐘" #: src/tuples-and-arrays.md msgid "[Arrays](./tuples-and-arrays/arrays.md) (5 minutes)" -msgstr "" +msgstr "[元組和陣列](./tuples-and-arrays/tuples-and-arrays.md) (5 分鐘)" #: src/tuples-and-arrays.md +#, fuzzy msgid "[Tuples](./tuples-and-arrays/tuples.md) (5 minutes)" -msgstr "" +msgstr "[元組和陣列](./tuples-and-arrays/tuples-and-arrays.md) (10 分鐘)" #: src/tuples-and-arrays.md msgid "[Array Iteration](./tuples-and-arrays/iteration.md) (3 minutes)" -msgstr "" +msgstr "[陣列疊代](./tuples-and-arrays/iteration.md) (3 分鐘)" #: src/tuples-and-arrays.md msgid "" "[Patterns and Destructuring](./tuples-and-arrays/destructuring.md) (5 " "minutes)" -msgstr "" +msgstr "[解構](./tuples-and-arrays/destructuring.md) (5 分鐘)" #: src/tuples-and-arrays.md msgid "[Exercise: Nested Arrays](./tuples-and-arrays/exercise.md) (15 minutes)" -msgstr "" +msgstr "[練習:巢狀陣列](./tuples-and-arrays/exercise.md) (15 分鐘)" #: src/tuples-and-arrays.md src/references.md msgid "This segment should take about 35 minutes" -msgstr "" +msgstr "講解這個主題大約需要 35 分鐘" #: src/tuples-and-arrays/arrays.md #, fuzzy @@ -3864,6 +3931,8 @@ msgid "" "runtime. Rust can usually optimize these checks away, and they can be " "avoided using unsafe Rust." msgstr "" +"請嘗試存取超出範圍的陣列元素。系統會在執行階段檢查存取陣列的行為。Rust 通常可" +"對這類檢查進行最佳化處理,避免使用不安全的 Rust 執行這些檢查。" #: src/tuples-and-arrays/arrays.md msgid "We can use literals to assign values to arrays." @@ -3910,13 +3979,13 @@ msgstr "" #: src/tuples-and-arrays/iteration.md msgid "The `for` statement supports iterating over arrays (but not tuples)." -msgstr "" +msgstr "`for` 陳述式支援對陣列進行疊代 (對元組則不支援)。" #: src/tuples-and-arrays/iteration.md msgid "" "This functionality uses the `IntoIterator` trait, but we haven't covered " "that yet." -msgstr "" +msgstr "這項功能使用 `IntoIterator` 特徵,但這部分我們尚未介紹。" #: src/tuples-and-arrays/iteration.md msgid "" @@ -3924,6 +3993,9 @@ msgid "" "` macros. These are always checked while, debug-only variants like " "`debug_assert!` compile to nothing in release builds." msgstr "" +"`assert_ne!` 是這裡的新巨集。此外還有 `assert_eq!` 和 `assert!` 巨集。系統一" +"律會檢查這些巨集,但如果是 `debug_assert!` 這類僅供偵錯的變體,在發布子版本中" +"會編譯為空白內容。" #: src/tuples-and-arrays/destructuring.md msgid "" @@ -3978,7 +4050,7 @@ msgstr "" #: src/tuples-and-arrays/exercise.md msgid "Arrays can contain other arrays:" -msgstr "" +msgstr "陣列可包含其他陣列:" #: src/tuples-and-arrays/exercise.md #, fuzzy @@ -4007,35 +4079,35 @@ msgstr "將下方程式碼複製到 ,並實作函 #: src/tuples-and-arrays/exercise.md src/borrowing/exercise.md #: src/unsafe-rust/exercise.md msgid "// TODO: remove this when you're done with your implementation.\n" -msgstr "" +msgstr "// TODO: remove this when you're done with your implementation.\n" #: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "//\n" -msgstr "" +msgstr "//\n" #: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "// <-- the comment makes rustfmt add a newline\n" -msgstr "" +msgstr "// <-- the comment makes rustfmt add a newline\n" #: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "\"matrix: {:#?}\"" -msgstr "" +msgstr "\"matrix: {:#?}\"" #: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "\"transposed: {:#?}\"" -msgstr "" +msgstr "\"transposed: {:#?}\"" #: src/references.md msgid "[Shared References](./references/shared.md) (10 minutes)" -msgstr "" +msgstr "[共用參照](./references/shared.md) (10 分鐘)" #: src/references.md msgid "[Exclusive References](./references/exclusive.md) (10 minutes)" -msgstr "" +msgstr "[專屬參照](./references/Exclusive.md) (10 分鐘)" #: src/references.md msgid "[Exercise: Geometry](./references/exercise.md) (15 minutes)" -msgstr "" +msgstr "[練習:幾何圖形](./references/exercise.md) (15 分鐘)" #: src/references/shared.md msgid "" @@ -4043,6 +4115,8 @@ msgid "" "responsibility for the value, and is also called \"borrowing\". Shared " "references are read-only, and the referenced data cannot change." msgstr "" +"所謂參照,是一種可存取另一值而不對該值負責的方法,也稱為「借用 " +"(borrowing)」。共用的參照僅供唯讀,且其參照的資料無法變更。" #: src/references/shared.md msgid "" @@ -4050,6 +4124,8 @@ msgid "" "with the `&` operator. The `*` operator \"dereferences\" a reference, " "yielding its value." msgstr "" +"如果是對 `T` 型別的共用參照,就屬於 `&T` 型別。系統會使用 `&` 運算子建立參照" +"值。`*` 運算子則用於將參照「解除參照」,產生參照的值。" #: src/references/shared.md msgid "Rust will statically forbid dangling references:" @@ -4062,6 +4138,9 @@ msgid "" "access the value, but is still \"owned\" by the original variable. The " "course will get into more detail on ownership in day 3." msgstr "" +"參照可說是「借用」自身參照的值,對不熟悉指標的學生而言,這是不錯的模型,因為" +"程式碼可以使用參照來存取值,但仍歸原始的變數所「擁有」。本課程將在第 3 天進一" +"步說明擁有權。" #: src/references/shared.md msgid "" @@ -4071,12 +4150,15 @@ msgid "" "cover how Rust prevents the memory-safety bugs that come from using raw " "pointers." msgstr "" +"參照需以指標的形式實作,主要優點是大小會比指向的目標小得多。熟悉 C 或 C++ 的" +"學生會覺得參照很像指標。在稍後的課程中,我們將介紹 Rust 如何避免使用原始指標" +"導致的記憶體安全錯誤。" #: src/references/shared.md msgid "" "Rust does not automatically create references for you - the `&` is always " "required." -msgstr "" +msgstr "Rust 不會自動為您建立參照,一律須使用 `&`。" #: src/references/shared.md #, fuzzy @@ -4095,12 +4177,16 @@ msgid "" "different from C++, where assignment to a reference changes the referenced " "value." msgstr "" +"這個範例中的 `r` 可變動,因此可以重新指派 (`r = &b`)。請注意,這會重新繫結 " +"`r`,因此會參照其他內容。此方式與 C++ 不同,在 C++ 中,對參照的賦值會變更參照" +"的值。" #: src/references/shared.md msgid "" "A shared reference does not allow modifying the value it refers to, even if " "that value was mutable. Try `*r = 'X'`." msgstr "" +"共用參照不允許修改其參照的值,即使該值可變動也一樣。請嘗試使用 `*r = 'X'`。" #: src/references/shared.md msgid "" @@ -4109,6 +4195,9 @@ msgid "" "a reference to `point`, but `point` will be deallocated when the function " "returns, so this will not compile." msgstr "" +"Rust 會追蹤所有參照的生命週期,確保其存留時間夠長。在安全的 Rust 中不會發生迷" +"途參照。`x_axis` 會傳回對 `point` 的參照,但在函式傳回時會釋放 `point` ,因此" +"不會編譯。" #: src/references/shared.md msgid "We will talk more about borrowing when we get to ownership." @@ -4119,6 +4208,8 @@ msgid "" "Exclusive references, also known as mutable references, allow changing the " "value they refer to. They have type `&mut T`." msgstr "" +"專屬參照 (也稱做可變動參照) 允許變更自身參照的值。這類參照屬於 `&mut T` 型" +"別。" #: src/references/exclusive.md msgid "" @@ -4128,6 +4219,9 @@ msgid "" "exists. Try making an `&point.0` or changing `point.0` while `x_coord` is " "alive." msgstr "" +"「專屬」表示只有這個參照可用來存取值。任何其他參照 (不論是共用或專屬參照) 都" +"不可以同時存在,此外,在專屬參照存在的情況下,就無法存取參照的值。請嘗試在 " +"`x_coord` 運作時建立 `&point.0` 或變更 `point.0`。" #: src/references/exclusive.md #, fuzzy @@ -4146,6 +4240,8 @@ msgid "" "representing a point as `[f64;3]`. It is up to you to determine the function " "signatures." msgstr "" +"我們會建立幾個 3D 幾何圖形的公用函式,將點表示為 `[f64;3]`。函式簽章則由您自" +"行決定。" #: src/references/exercise.md msgid "" @@ -4155,68 +4251,77 @@ msgid "" "square\n" "// root, like `v.sqrt()`.\n" msgstr "" +"// Calculate the magnitude of a vector by summing the squares of its " +"coordinates\n" +"// and taking the square root. Use the `sqrt()` method to calculate the " +"square\n" +"// root, like `v.sqrt()`.\n" #: src/references/exercise.md msgid "" "// Normalize a vector by calculating its magnitude and dividing all of its\n" "// coordinates by that magnitude.\n" msgstr "" +"// Normalize a vector by calculating its magnitude and dividing all of its\n" +"// coordinates by that magnitude.\n" #: src/references/exercise.md msgid "// Use the following `main` to test your work.\n" -msgstr "" +msgstr "// Use the following `main` to test your work.\n" #: src/references/exercise.md src/references/solution.md msgid "\"Magnitude of a unit vector: {}\"" -msgstr "" +msgstr "\"Magnitude of a unit vector: {}\"" #: src/references/exercise.md src/references/solution.md msgid "\"Magnitude of {v:?}: {}\"" -msgstr "" +msgstr "\"Magnitude of {v:?}: {}\"" #: src/references/exercise.md src/references/solution.md msgid "\"Magnitude of {v:?} after normalization: {}\"" -msgstr "" +msgstr "\"Magnitude of {v:?} after normalization: {}\"" #: src/references/solution.md msgid "/// Calculate the magnitude of the given vector.\n" -msgstr "" +msgstr "/// Calculate the magnitude of the given vector.\n" #: src/references/solution.md msgid "" "/// Change the magnitude of the vector to 1.0 without changing its " "direction.\n" msgstr "" +"/// Change the magnitude of the vector to 1.0 without changing its " +"direction.\n" #: src/user-defined-types.md msgid "[Named Structs](./user-defined-types/named-structs.md) (10 minutes)" -msgstr "" +msgstr "[已命名的結構體](./user-defined-types/named-structs.md) (10 分鐘)" #: src/user-defined-types.md msgid "[Tuple Structs](./user-defined-types/tuple-structs.md) (10 minutes)" -msgstr "" +msgstr "[元組結構體](./user-defined-types/tuple-structs.md) (10 分鐘)" #: src/user-defined-types.md msgid "[Enums](./user-defined-types/enums.md) (5 minutes)" -msgstr "" +msgstr "[列舉](./user-defined-types/enums.md) (5 分鐘)" #: src/user-defined-types.md msgid "" "[Static and Const](./user-defined-types/static-and-const.md) (5 minutes)" -msgstr "" +msgstr "[靜態和常數](./user-defined-types/static-and-const.md) (5 分鐘)" #: src/user-defined-types.md msgid "[Type Aliases](./user-defined-types/aliases.md) (2 minutes)" -msgstr "" +msgstr "[型別別名](./user-defined-types/aliases.md) (2 分鐘)" #: src/user-defined-types.md msgid "" "[Exercise: Elevator Events](./user-defined-types/exercise.md) (15 minutes)" -msgstr "" +msgstr "[練習:電梯事件](./user-defined-types/exercise.md) (15 分鐘)" #: src/user-defined-types.md src/borrowing.md msgid "This segment should take about 50 minutes" -msgstr "" +msgstr "講解這個主題大約需要 50 分鐘" #: src/user-defined-types/named-structs.md msgid "Like C and C++, Rust has support for custom structs:" @@ -4224,20 +4329,20 @@ msgstr "與 C 和 C++ 一樣,Rust 支援自訂結構體:" #: src/user-defined-types/named-structs.md msgid "\"{} is {} years old\"" -msgstr "" +msgstr "\"{} is {} years old\"" #: src/user-defined-types/named-structs.md #: src/android/interoperability/with-c/bindgen.md msgid "\"Peter\"" -msgstr "" +msgstr "\"Peter\"" #: src/user-defined-types/named-structs.md msgid "\"Avery\"" -msgstr "" +msgstr "\"Avery\"" #: src/user-defined-types/named-structs.md msgid "\"Jackie\"" -msgstr "" +msgstr "\"Jackie\"" #: src/user-defined-types/named-structs.md src/user-defined-types/enums.md #: src/pattern-matching/match.md src/methods-and-traits/methods.md @@ -4302,7 +4407,7 @@ msgstr "如果欄位名稱不重要,您可以使用元組結構體:" #: src/user-defined-types/tuple-structs.md msgid "\"({}, {})\"" -msgstr "" +msgstr "\"({}, {})\"" #: src/user-defined-types/tuple-structs.md msgid "This is often used for single-field wrappers (called newtypes):" @@ -4310,14 +4415,14 @@ msgstr "這通常用於單一欄位的包裝函式 (稱為 newtypes):" #: src/user-defined-types/tuple-structs.md msgid "\"Ask a rocket scientist at NASA\"" -msgstr "" +msgstr "\"Ask a rocket scientist at NASA\"" #: src/user-defined-types/tuple-structs.md #: src/android/interoperability/cpp/cpp-bridge.md #: src/bare-metal/microcontrollers/type-state.md #: src/async/pitfalls/cancellation.md msgid "// ...\n" -msgstr "" +msgstr "// ...\n" #: src/user-defined-types/tuple-structs.md msgid "" @@ -4372,19 +4477,19 @@ msgstr "`enum` 關鍵字可建立具有幾個不同變體的型別:" #: src/user-defined-types/enums.md msgid "// Simple variant\n" -msgstr "" +msgstr "// Simple variant\n" #: src/user-defined-types/enums.md msgid "// Tuple variant\n" -msgstr "" +msgstr "// Tuple variant\n" #: src/user-defined-types/enums.md msgid "// Struct variant\n" -msgstr "" +msgstr "// Struct variant\n" #: src/user-defined-types/enums.md msgid "\"On this turn: {:?}\"" -msgstr "" +msgstr "\"On this turn: {:?}\"" #: src/user-defined-types/enums.md #, fuzzy @@ -4396,6 +4501,8 @@ msgid "" "`Direction` is a type with variants. There are two values of `Direction`: " "`Direction::Left` and `Direction::Right`." msgstr "" +"`Direction` 是含變體的型別,有`Direction::Left` 和 `Direction::Right` 這兩個" +"值。" #: src/user-defined-types/enums.md msgid "" @@ -4403,6 +4510,8 @@ msgid "" "Rust will store a discriminant so that it knows at runtime which variant is " "in a `PlayerMove` value." msgstr "" +"`PlayerMove` 是含三種變體的型別。除了酬載之外,Rust 還會儲存判別值,以便在執" +"行階段瞭解哪個變體屬於 `PlayerMove` 值。" #: src/user-defined-types/enums.md #, fuzzy @@ -4430,11 +4539,11 @@ msgstr "" #: src/user-defined-types/enums.md msgid "Rust uses minimal space to store the discriminant." -msgstr "" +msgstr "Rust 會以最少的空間來儲存判別值。" #: src/user-defined-types/enums.md msgid "If necessary, it stores an integer of the smallest required size" -msgstr "" +msgstr "如有需要,Rust 會儲存最小所需大小的整數" #: src/user-defined-types/enums.md msgid "" @@ -4443,6 +4552,9 @@ msgid "" "optimization\"). For example, `Option<&u8>` stores either a pointer to an " "integer or `NULL` for the `None` variant." msgstr "" +"如果允許的變體值未涵蓋所有位元模式,Rust 會使用無效的位元模式來編碼判別值 (即" +"「區位最佳化」)。舉例來說,`Option<&u8>` 可儲存指向整數的指標,也可儲存 " +"`None` 變體適用的 `NULL`。" #: src/user-defined-types/enums.md msgid "" @@ -4460,13 +4572,13 @@ msgstr "" #: src/memory-management/review.md src/memory-management/move.md #: src/smart-pointers/box.md src/borrowing/shared.md msgid "More to Explore" -msgstr "" +msgstr "探索更多內容" #: src/user-defined-types/enums.md msgid "" "Rust has several optimizations it can employ to make enums take up less " "space." -msgstr "" +msgstr "Rust 支援多種最佳化做法,可用於縮減列舉占用的空間。" #: src/user-defined-types/enums.md msgid "" @@ -4539,7 +4651,7 @@ msgstr "歡迎參加第 1 天課程" #: src/user-defined-types/static-and-const.md msgid "\"{BANNER}\"" -msgstr "" +msgstr "\"{BANNER}\"" #: src/user-defined-types/static-and-const.md #, fuzzy @@ -4663,15 +4775,15 @@ msgstr "您可以使用 `std::thread_local` 巨集來建立 `thread_local` 資 msgid "" "A type alias creates a name for another type. The two types can be used " "interchangeably." -msgstr "" +msgstr "型別別名會為另一型別建立名稱。這兩種型別可以交替使用。" #: src/user-defined-types/aliases.md msgid "// Aliases are more useful with long, complex types:\n" -msgstr "" +msgstr "// Aliases are more useful with long, complex types:\n" #: src/user-defined-types/aliases.md msgid "C programmers will recognize this as similar to a `typedef`." -msgstr "" +msgstr "別名在 C 語言的程式設計師眼中類似於 `typedef`。" #: src/user-defined-types/exercise.md msgid "" @@ -4680,6 +4792,8 @@ msgid "" "various events. Use `#[derive(Debug)]` to allow the types to be formatted " "with `{:?}`." msgstr "" +"我們會建立資料結構,用來代表電梯控制系統中的事件。您可以自行定義類型和函式," +"建構各種事件。請使用 `#[derive(Debug)]` 來允許型別採用 `{:?}` 的格式。" #: src/user-defined-types/exercise.md msgid "" @@ -4687,97 +4801,102 @@ msgid "" "`main` runs without errors. The next part of the course will cover getting " "data out of these structures." msgstr "" +"這項練習只需建立及填入資料結構,`main` 就能在不發生錯誤的情況下執行。本課程的" +"下一部分將介紹如何從這些結構中取得資料。" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "" "/// An event in the elevator system that the controller must react to.\n" msgstr "" +"/// An event in the elevator system that the controller must react to.\n" #: src/user-defined-types/exercise.md msgid "// TODO: add required variants\n" -msgstr "" +msgstr "// TODO: add required variants\n" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "/// A direction of travel.\n" -msgstr "" +msgstr "/// A direction of travel.\n" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "/// The car has arrived on the given floor.\n" -msgstr "" +msgstr "/// The car has arrived on the given floor.\n" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "/// The car doors have opened.\n" -msgstr "" +msgstr "/// The car doors have opened.\n" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "/// The car doors have closed.\n" -msgstr "" +msgstr "/// The car doors have closed.\n" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "" "/// A directional button was pressed in an elevator lobby on the given " "floor.\n" msgstr "" +"/// A directional button was pressed in an elevator lobby on the given " +"floor.\n" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "/// A floor button was pressed in the elevator car.\n" -msgstr "" +msgstr "/// A floor button was pressed in the elevator car.\n" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "\"A ground floor passenger has pressed the up button: {:?}\"" -msgstr "" +msgstr "\"A ground floor passenger has pressed the up button: {:?}\"" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "\"The car has arrived on the ground floor: {:?}\"" -msgstr "" +msgstr "\"The car has arrived on the ground floor: {:?}\"" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "\"The car door opened: {:?}\"" -msgstr "" +msgstr "\"The car door opened: {:?}\"" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "\"A passenger has pressed the 3rd floor button: {:?}\"" -msgstr "" +msgstr "\"A passenger has pressed the 3rd floor button: {:?}\"" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "\"The car door closed: {:?}\"" -msgstr "" +msgstr "\"The car door closed: {:?}\"" #: src/user-defined-types/exercise.md src/user-defined-types/solution.md msgid "\"The car has arrived on the 3rd floor: {:?}\"" -msgstr "" +msgstr "\"The car has arrived on the 3rd floor: {:?}\"" #: src/user-defined-types/solution.md msgid "/// A button was pressed.\n" -msgstr "" +msgstr "/// A button was pressed.\n" #: src/user-defined-types/solution.md msgid "/// The car has arrived at the given floor.\n" -msgstr "" +msgstr "/// The car has arrived at the given floor.\n" #: src/user-defined-types/solution.md msgid "/// The car's doors have opened.\n" -msgstr "" +msgstr "/// The car's doors have opened.\n" #: src/user-defined-types/solution.md msgid "/// The car's doors have closed.\n" -msgstr "" +msgstr "/// The car's doors have closed.\n" #: src/user-defined-types/solution.md msgid "/// A floor is represented as an integer.\n" -msgstr "" +msgstr "/// A floor is represented as an integer.\n" #: src/user-defined-types/solution.md msgid "/// A user-accessible button.\n" -msgstr "" +msgstr "/// A user-accessible button.\n" #: src/user-defined-types/solution.md msgid "/// A button in the elevator lobby on the given floor.\n" -msgstr "" +msgstr "/// A button in the elevator lobby on the given floor.\n" #: src/user-defined-types/solution.md msgid "/// A floor button within the car.\n" -msgstr "" +msgstr "/// A floor button within the car.\n" #: src/welcome-day-2.md msgid "Welcome to Day 2"