/* Page prose (ja) */
"CancellationIsAPoliteRequest" = "# キャンセルは丁寧なお願い\n\n顧客が 200 ページの印刷の途中で電話をかけてきてキャンセルしたとしましょう。*今すぐ*トナーの無駄づかいを止めたいところです。どの `Operation` にも `cancel()` メソッドがありますが、ここで多くの人を驚かせる部分があります。\n\n**`cancel()` はあなたのコードを止めません。フラグ（`isCancelled`）を `true` にするだけです。Operation は自分でそのフラグに気づき、自ら手を引く必要があります。**\n\nこれは**協調的キャンセル**と呼ばれます。システムがお願いし、あなたのコードが協力するのです。命令の途中で強制終了されるものは何もありません。`main()` が `isCancelled` をまったく確認しなければ、`cancel()` を呼んでも何も変わらず、作業は最後まで実行されます。\n\nつまりルールはこうです。`isCancelled` を適切なポイントで、とくにループの内側や重いステップの前に確認しましょう。";
"CancellationIsAPoliteRequest-2" = "**実行して確認:** 3、4 ページがレンダリングされ、続いて `📣 Customer cancelled the order`、そして次のループの反復で `isCancelled == true` が見えて `🚫 Rendering stopped early...` と出力されます。残りのページは決してレンダリングされません。`if isCancelled` のチェックを削除して、もう一度実行してみましょう。今度はキャンセルに関係なく 10 ページすべてがレンダリングされます。`cancel()` だけではお願いにすぎないことの証拠です。\n\n* callout(試してみよう): キャンセルの遅延を `1` から `0.1` に変えてみましょう。停止するまでに何ページがレンダリングされるでしょうか。\n\nしっかり押さえておきたい 2 つの細かな点があります。\n\n* **`completionBlock` はそれでも実行されます。** キャンセルされた Operation も、やはり*終了した* Operation です。だからこそ、成功したのか手を引いたのかを判断するために、completion の内側で `isCancelled` を確認することがよくあります。\n* **キューのすべてを一度にキャンセルするには、** `queue.cancelAllOperations()` を呼びます。これはキューが把握しているすべての Operation に `cancel()` を送りますが、それぞれの Operation はやはり自分でフラグを確認する必要があります。\n\n[前へ](@previous)  |  3 / 7 ページ  |  [次へ: 非同期の Operation](@next)";
