「iPhone開発秘籍」という本の翻訳ミス


市販のiPhone開発秘籍はiPhone Developer's Cookbookの中国語版である.
何人かの翻訳者のiPhone開発の普及に対する努力を楽しんでいますが、技術の基礎はお世辞にも言えません.
翻訳には明らかな抜け穴があり、簡単なtypoではなく、翻訳者がc++を深く勉強したり、本を急いで翻訳したりしたことがなく、良いreviewを受けたことがないようだ.
私が見たいくつかのエラーとその修正を本帖に更新し続けました.
------
1.2節(iPhoneプロジェクトの構築)では、次の簡単な文に2つの間違いがあります.
「ANSI Cはオブジェクト向けのサブセットであり、ANSI CはCとSmalltalkを組み合わせて開発された」
英文原文:
“This is an object-orientedsuperset of ANSI C, which was developed from a mix of C and Smalltalk.”
その中でsupersetはsubsetの“サブセット”と誤訳されて、CとSmalltalkの結合は明らかにObjective-Cで、どうしてANSI Cになりましたか?
正しい訳文は次のとおりです.
「ANSI Cのオブジェクト向けスーパーセットであり、CとSmalltalk言語の組み合わせによって開発された」.
------
1.5 SDK制限
「in other ways」は「言い換えれば」ではなく「他の面で」であるべきだ.文脈全体は次のようになります.
似たような言語やフレームワークを使用するほか、Mac機のプログラミングに比べてiPhoneの開発は制限されている.
------
1.6プログラミングモデル
「iPhoneプログラミングセンターは2つの重要なモデルを採用している」と、低レベルのエラーが発生した.
iPhone programming centers on two important paradigms
centers onはこの文の述語で、正しい訳文は:“iPhoneのプログラミングは2つの重要なモデルを中心にします:”
------
1.6.1「擬似多重継承(呼び出しによる転送)」は、翻訳者の翻訳が適切です.
英文原文:
"Multiple inheritance is an important feature of Objective-C’s approach to object- oriented programming. iPhone classes can inherit behaviors and data types from more than one parent.Take the class UITextView, for example. It’s both text and a view. Like other view classes,it can appear onscreen."
原文にはいくつかのあいまいさがあり、多重継承はオブジェクト向けの言語、例えばC++に特定の意味があり、同時に2つの親から派生することを指す.Objective-CはJava言語と同じように単独で継承されており、親は1つしかいないことを知っています.オブジェクト向けの多重継承特性は、「メッセージ転送」(または訳文中の呼び出し転送)によって実現する.UItextViewクラスは実際には1つの親のみである.以下、アップルのウェブサイト上のメッセージ転送と多重継承特性に関する公式説明を補足します.
メッセージ転送と多重継承
メッセージ転送は継承に似ており、Objective-Cプログラムで多重継承をシミュレートするために使用することができる.図5-1に示すように、1つのオブジェクトは、転送によってメッセージに応答し、そのオブジェクトが他のクラスから借りられたか、または「継承」された方法で実装されたように見える.
図5-1メッセージ転送
上の図では、Warriorクラスのオブジェクトインスタンスは、negotiateメッセージをDiplomatクラスのインスタンスに転送する.WarriorはDiplomatクラスと同様にnegotiateメッセージに応答し、動作はDiplomatと同様であるように見える(実際にはDiplomatクラスがこのメッセージに応答しているにもかかわらず).
メッセージを転送するオブジェクトには、2つの継承システムブランチがあるように見えます.すなわち、メッセージに応答するオブジェクトと、メッセージに応答するオブジェクトとがあります.上記の例では、WarriorはDiplomatと自分の親から同時に継承されているように見えます.
メッセージ転送は、多重継承の多くの特性を提供します.しかし、両者には大きな違いがあります.多重継承は、異なる動作を単一のオブジェクトにカプセル化し、膨大で複雑なオブジェクトをもたらす可能性があります.メッセージ転送は、問題をより小さなオブジェクトに分解するが、メッセージ送信オブジェクトにとって完全に透明な方法でこれらのオブジェクトを関連付ける.
------
page 10の下、section 1.6.2:
「さまざまな外観でインタラクティブに解釈できます」
英文原文:
"So in that sense alone, the UIViewController does act as a controller by providing these links between the way things look and how interactions are interpreted."
以下のように訳すべきです.
「物事の外観とインタラクティブな動作の解釈のつながりを提供します」
------
page 21,1.9.4識別情報の編集
「会社名エントリのみ編集可能」は「会社名エントリのみ編集可能」