IT翻訳者の疑問

この業界に入って約20年。私の疑問は相変わらず解決しません。

原文の意味を理解せずに訳せますか?

昨日取り上げた文章は、「〜により」の用例を探していて見つけたものですが、読んでいるといくつも突っ込みどころがあります。

コンパイル エラーが起きると、データベースエンジン の実行プランが構築できず、バッチ内のどの処理も実行されません。
A compile error prevents the Database Engine from building an execution plan, so nothing in the batch is executed.

buildするのはthe Database Engineだから、「データベースの実行プラン」ではおかしいですね。原文ではsoを使って「だからこうなった」と述べていますが、日本語訳ではそこがはっきりしません。もしかして、「実行プランが構築できないので、」と訳すと「冗長だ」と言われてしまうのでしょうか。もう一つ、「バッチ内のどの処理も」もひっかかります。SQLというのはだいたい順番に実行していくものですが、「どの処理も」だと、バッチ内の特定の処理を選んで実行することが可能であるかのような印象を受けます。ですので、私ならば「コンパイル エラーが起きると、データベースエンジンが実行プランを構築することができないので、バッチ内の処理は一切実行されません」などと修正します。

エラーを生成したステートメントよりも前にあるすべてのステートメントロールバックされたように見えますが、エラーによりバッチ内のどのステートメントも実行されませんでした。
Although it appears that all of the statements before the one generating the error were rolled back, the error prevented anything in the batch from being executed.

「〜ように見えますが、」の後に読者が期待するのは、「実際には〜です」という説明ですが、「エラーによりバッチ内のどのステートメントも実行されませんでした。」では何か肩すかしをくらったような気分になります。実際にはどうなのかというと、「エラーを生成したステートメントよりも前にあるステートメント」も実行されてはいないということですよね。「〜見えますが、エラーが発生したので、バッチ内のステートメントはどれも実行されていません」などと修正するともう少しわかりやすいかと思います。
この訳文を読んでいて思ったのは、訳した人は原文の意味をあまり理解していないのではということです。原文をどうにか日本語に置き換えるのがやっとで、話の流れも理解していないし、原文に書かれていることが読者(プログラマー)にとってどういう意味を持つかも想像できていないように思えます。このことは何度も書いたような気がしますが、翻訳レビューの仕事をしていると、同じような思いをしょっちゅうするのです。
たとえば、上記の例のexecution planが何であるかを本当に理解していたら、プランなしではSQLを実行できないことも理解できるはずなので、原文のsoをきちんと訳せるでしょう。自分でSQLを使ったことのない翻訳者の中には、用語集を見て「実行プラン」という訳を当てておしまいという人もいるのではないでしょうか。以前、「この手法を使うと、(プログラムの中で)永久ループを作成できます」という訳文を見て唖然としたことがあります。だからその手法を使うときは注意しろと書かれていたのにです。確かに原文にはcanが使われていたような気がします。couldかもしれませんが、いずれにしても、永久ループが好ましいものではないということを知らないと、変な訳文になってしまいます。ではどうすればよいか。「わからないことは調べる」に尽きると思います。