[JM:00492] Re: [POST:DO] bash bash.1

アーカイブの一覧に戻る

長南洋一 cyoic****@maple*****
2011年 11月 5日 (土) 20:18:03 JST


長南です。

うーん、苦労なさっていますね。前訳があると、どうしてもそれに
引きずられますから、かえって大変なことがあります。短いところは、
いっそ自分でゼロから訳してしまった方が、きれいに訳せることも
多いものです。

Takahashi さんのメールより [JM:00491]
>
>>> .B LC_ALL
>>> .\"O This variable overrides the value of
>>> .\"O .SM
>>> .\"O .B LANG
>>> .\"O and any other
>>> .\"O \fBLC_\fP variable specifying a locale category.
>>> この変数はロケールのカテゴリを指定する \fBLC_\fP 変数と
>>> .B LANG
>>> の値を全て上書きします。

> 「すべての」を追加しました。
> 
>     この変数はロケールカテゴリを指定する LC_ 変数と
>     LANG のすべての値に優先します。

細かいことに何度もダメ出しして恐縮ですが、「すべて」の位置が微妙に
おかしい気がします。ざっと読んだときに LANG の値が複数あるように
読めてしまいます。よく考えれば、「複数の LC_ 変数とひとつのLANG 変数、
そのすべての値」ということだろうとわかるのですが。

any を「すべて」と訳すのなら、こうでしょうか。

  この変数はロケールカテゴリを指定する LC_ 変数と LANG の値の
  すべてに優先します。

やっぱりちょっとボンヤリしていますね。

「any すべて」を後ろに持ってきたのは、前の翻訳の工夫ですが (おそらく
「上書きする」と訳したため)、原文では any は LC_ 変数にしか付いて
いません。やはり、any は LC_ にだけ付けておけばよいのではないでしょうか。

  この変数は、ロケールカテゴリを指定するすべての LC_ 変数や
  LANG の値に優先します。

これだと、LC_ALL が LC_ 変数に入らないことになってしまいます。
それも変です。other を復活させて、

  この変数は、ロケールカテゴリを指定するほかの LC_ 変数や
  LANG の値に優先します。

やはり、(LC_ALL がいかに強力かの表現として) any もあった方がよいと
思うのなら、

  この変数は、ロケールカテゴリを指定するほかのすべての LC_ 変数や
  LANG の値に優先します。

下の二つあたりが、表現として安定している (つまり、読んでわかりやすい)
のではないかと思います。

# 厳密に言うと、「この変数の値は ... の値に優先する」でしょうけれど、
# 「この変数は」だけでも、まあわかってもらえるでしょうね。


>>> .\"O accessed is selected.  The
>>> .\"O .I name
>>> .\"O of a stopped job, in this context, is the command line used to
>>> .\"O start it.
>>>
>>> ここでの
>>> .I 名前
>>> とは、コマンドを起動する際に使ったコマンドラインのことです。

>> こうなさったのですね。
>>
>>  入力された文字列で始まるジョブが複数ある場合には、
>>  最後にアクセスされたものが選ばれます。
>>  停止中のジョブの
>>  .I 名前
>>  とは、コマンドを起動する際に使ったコマンドラインのことです。
>>
>> in this context は、やはり省略しない方がよいと思います。
>>
>> 「何々とは」という表現は、原則として、すでに登場した (あるいは、読者
>> にとって常識的に既知の) 「何々」について、それを説明する表現です。
>> この項目の場合、「停止中のジョブの名前 (the name of a stopped job)」
>> という言葉は、この文の前に出てきません (「停止中のジョブ」という言葉は
>> 存在しますが)。そのため、「停止中のジョブの名前とは」と言われても、
>> 唐突な感じがするわけです。原文が in this context (ここの文脈では、
>> この文中では) と説明をつけているのは、それゆえだと思います。

> 以下の文面で変更しました。
> 
>     このとき、コマンドを起動するときに使ったコマンドラインを停止中のジョ
>     ブの名前として指定します。

"in this context" を「このパラグラフの中で」ではなく、「ユーザが
ジョブ制御をするときに」と解釈なさったのですね。なるほど、context には
そういう解釈もあるかもしれません。

しかし、"The name of a stopped job ... is the command line used to
start it."という原文を「コマンドを起動するときに使ったコマンドラインを
停止中のジョブの名前として指定します」と訳すのは、無理があると思います。
失礼ながら、考えすぎて思考の迷路に踏み込んでいらっしゃる気がします。

すこし後にこんなふうに書いてあります。

  if set to substring, the string supplied needs to match a substring
  of the name of a stopped job.

つまり、「停止中のジョブの名前」というのは、そのコマンドを起動するときに
コマンドラインに打ち込んだ文字列すべてを指しているわけです。そして、
ジョブ制御機能でそのジョブを呼び出すのに必要なのは、auto_resume=sbstring
なら、その文字列の一部だけでよい、と言っている。

ですから、「このとき、コマンドを起動するときに使ったコマンドラインを
停止中のジョブの名前として指定します」という訳は、auto_resume=exact
のときしか、正しくありません。それに、すぐ後に "If  set to the value
exact ... if  set  to  substring ... If set to any other value ..." と、
それぞれの場合が続きますから、"The name of a stopped job, in this
context, is ..." というこの文は、auto_resume=exact の場合とは別の、
もっと一般的な話だと考えるのが自然です。言い換えると、この文は、
以後の記述のために言葉の定義をしているにすぎないのだと思います。
「『停止中のジョブの名前』というのは ... である」と。

そう考えると、"in this context" も、「この文中では」の意味に取った方が
やはり自然です。

原文から離れて訳すのは、原文をそのまま訳したのでは意味が通らないときの、
言わば非常手段です。素直に訳してすむ文章は、素直に訳しておくのが
無難だと思います。それで前後の文とうまくつながらないようなら、むしろ
つなぎ方を工夫した方がよいものです。

文章の流れなんて、全体を見なければわかりません。そこで、この項目の
全文を引用します。

まず原文。

  auto_resume
    This variable controls how the shell interacts with the user and
    job  control.   If this variable is set, single word simple com‐
    mands without redirections are treated as candidates for resump‐
    tion of an existing stopped job.  There is no ambiguity allowed;
    if there is more than one job beginning with the  string  typed,
    the  job  most  recently  accessed  is  selected.  The name of a
    stopped job, in this context, is the command line used to  start
    it.   If  set to the value exact, the string supplied must match
    the name of a stopped job exactly;  if  set  to  substring,  the
    string  supplied  needs  to  match  a substring of the name of a
    stopped job.  The substring value provides functionality  analo‐
    gous  to the %?  job identifier (see JOB CONTROL below).  If set
    to any other value, the supplied string must be a  prefix  of  a
    stopped job's name; this provides functionality analogous to the
    %string job identifier.

最後の変更をする前の訳文はこんなふうになっていたのでしょうか。

    この変数はユーザがジョブ制御をするときの方法を変更します。この変数
    を設定した場合、1  語からなるリダイレクトなしの単純なコマンドを
    入力すると、停止中ジョブの実行再開候補として扱われます。 曖昧な
    指定は許されません。入力された文字列で始まるジョブが複数ある場合
    には、最後にアクセスされたものが選ばれます。停止中のジョブの名前
    とは、コマンドを起動する際に使ったコマンドラインのことです。この
    変数の値に exact が設定されている場合、 与えられた文字列は
    停止中のジョブの名前に 正確にマッチしなければなりません。
    substring が設定されている場合は、与えられた文字列は停止中の
    ジョブの名前の部分文字列にマッチする必要があります。substring 
    という値は、ジョブ識別子の  %?  に似た機能を持っています (後述の
    ジョブ制御 を参照)。 これ以外の値が設定されている場合、 与えられた
    文字列は停止中のジョブの名前の先頭部分でなければなりません。
    これはジョブ識別子の %string と似た機能を持っています。

in this contex を「以下で ... というのは」と訳してみます。
文章のつながりをよくするために、ほかにもあちこち書き変えています。

    この変数はユーザがジョブ制御をするときの方法を変更します。この変数
    を設定した場合、1  語からなるリダイレクトなしの単純なコマンドを
    入力すると、停止中ジョブの実行再開候補として扱われます。 曖昧な
    指定は許されませんが、入力された文字列で始まるジョブが複数ある場合
    には、最後にアクセスされたジョブが選択されます。以下で「停止中の
    ジョブの名前」というのは、コマンドを起動する際に使ったコマンド
    ラインのことです。この変数の値に exact が設定されている場合は、 
    入力する文字列は停止中のジョブの名前に正確にマッチしなければ
    なりません。値に substring が設定されている場合は、入力する文字列は
    停止中のジョブの名前の部分文字列にマッチしていれば十分です。
    substring という値は、ジョブ識別子の %? に似た機能を提供するのです
    (後述のジョブ制御 を参照)。これ以外の値が設定されている場合は、
    入力する文字列は停止中のジョブの名前の先頭部分でなければなりません。
    すなわち、ジョブ識別子の %string と似た機能を提供するわけです。

# 変更点中の三ヶ所ほどについてコメントしておきます。
#
# 「曖昧な指定は許されません。入力された文字列で」を「曖昧な指定は
# 許されませんが、入力された文字列で」と、「が、」でつなぎました。
# 「許されません。」では断定が強すぎて、後続の但し書きとうまく
# つながらないからです。原文もセミコロンですし。
# 
# 「substring が設定されている場合は」を「値に substring が設定されて
# いる場合は」と、「値に」を入れました。「変数の値に」もあります。
#
# the string supplied (the supplied string) を「与えられた」から
# 「入力する」に変更しました。初出だけは、「コマンドラインから入力する」
# にした方がよいかもしれません。あるいは、もっと補足して、「再開する
# ジョブを指定するために (コマンドラインから) 入力する ...」とか
# 「ジョブを再開するために (コマンドラインから) 入力する ...」とか。

まだ、お気に入らないでしょうが、わたしだって満足しているわけでは
ありません。まだまだ手を入れる余地があると思います。でも、まあ、
こんなところでしょう。同じところにいつまでもこだわっていたら、
先へ進めませんし。

-- 
長南洋一




linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る