[JM:02664] Re: [POST:DP] GNU findutils locate.1

Back to archive index
matsuand michio_matsu****@yahoo*****
2021年 7月 10日 (土) 18:27:35 JST


校正確認ありがとうございます。以下返信します。

----- Original Message -----
> From: ribbon <jm****@ribbo*****>
> To: linux****@lists*****
> Cc:
> Date: 2021/7/3, Sat 23:19
> Subject: [JM:02594] Re: [POST:DP] GNU findutils locate.1
>
> On Mon, Jun 28, 2021 at 07:43:54PM +0900, matsuand wrote:
>> <STATUS>
>> stat: DP
>> ppkg: GNU findutils 4.8.0
>> page: locate.1
>> date: 2021/01/09
>> mail: michio_matsu****@yahoo*****
>> name: Michio MATSUYAMA
>> </STATUS>
...

> このマニュアルページは GNU 版 \fBlocate\fP の使い方を説明するものである。
> ->
> このマニュアルページは GNU 版 \fBlocate\fP について記したものである。

ご指摘納得します。修正します。


> は与えられたパターンそれぞれに対して、一つまたは複数のファイル名データベースを検索し、
> ->
> は指定された各パターンに対して、一つ以上のファイル名データベースを検索し、

ご指摘趣旨はわかるつもりでいます。
とりあえずご指摘訳「一つ以上の」を採用します。

一応、感じていることを以下に。
ここは割と悩む表現で、旧訳「一つまたは複数」と新訳「一つ以上」は、
どちらも日本語として、しっくりこない、本来の日本語には存在していない
表現のように感じています。
よく私は、そういった表現に出くわした場合に、
「いくつかの」「指定分の」「指定された数だけの」という表現で
ごまかす場合があります。 ここはそういう経験話だけにとどめます。


>[以下 matsuand が引用を補記]
>[原文]
> If a pattern is a plain string it contains no metacharacters
> locate displays all file names in the database that contain
>  that string anywhere.
>[旧訳]
> パターンが メタキャラクターを含まない 通常の文字列である場合には、
> locate はその文字列を (部分的にでも、またどんな位置にでも) 含む
> ファイル名をすべて表示する。
> ->
> どこかに含んだファイル名をすべて表示する。
> #部分的にでも、というのは訳しすぎかなと思いました。

ご指摘趣旨はわかります。
ただ「どこかに含んだファイル名」という表現が、
もう一つ的確でないように感じます。
厳密に書けば「**ファイル名**のどこかに(その文字列を)
含んだ**ファイル**をすべて表示する」です。
合わせて in the database が訳されていないことに気づきましたので、
以下のようにします。

再訳
パターンがメタキャラクターを含まない通常の文字列である場合、
locate はデータベース内のファイル名の中から、
その文字列がファイル名に含まれているものをすべて表示する。

> はパターンに正確に合う
> ->
> はパターンに正確に一致する

修正します。


> ファイル名データベースは、最後に更新された時点において、システムに存在
> していたファイルのリストからなっている。
> ->
> ファイル名データベースには、最後に更新された時点において、システムに存在
> していたファイルの一覧が含まれている。

ご指摘納得します。修正します。


> fBupdatedb\fP(1)を見よ。
> ->
> fBupdatedb\fP(1)を参照。

ご指摘納得します。修正します。


>[以下 matsuand が引用を補記]
>[原文]
> locate's output is going to a terminal, unusual characters in 
> the output are escaped in the same way as for the \-print action
> of the find command.
>[旧訳]
> locate は端末に対して出力を行う。出力には適さない文字が出力される際には、
> その文字がエスケープ出力される。これは find コマンドの \-print 処理と
> 同様にして行われる。
> ->
> ...
> 図形文字以外を出力する際には、
> #図形文字 とは、JIS X0201で規定されている、「手書き・印字・表示
> #の可視的表現を持ち、一つ以上のビット組み合わせからなる符号化表現
> #を持つ文字」となります。

意味として「図形文字」なのかもしれませんが、原文にはそう書いていません。
わざわざ用語を持ち出さず、原文のまま訳すのでよいと思います。
「出力に適さない」とも書いていないので、以下のようにします。

再訳
locate は端末に対して出力を行う。
通常文字以外はエスケープ出力される。


> 区切り文字として、改行文字ではなく
> ->
> 区切り文字として、改行文字の代わりに

修正します。


>[以下 matsuand が引用を補記]
>[原文]
> Print only names which match all non-option arguments, not those matching
> one or more non-option arguments.
>[旧訳]
> 必須の引数すべてにマッチする名前のみを表示する。
> つまりすべてにマッチせず、1 つやその一部にのみマッチするものは表示しない。
> ->
>...
> オプションではない引き数すべてに一致する名前のみを表示する。すなわち、
> 一つ以上のオプションではない引き数に一致したものは表示しない。

ご指摘内容は納得します。「引き数」は「引数」とします。

なおご提案訳の2文目は、少々表現が回りくどいと思います。
この文章は -A または --all オプションを説明している箇所なのですが、これは
複数の「オプションではない引数」を AND 条件として解釈し、すべてに一致した
場合に検索結果を表示します、ということを言っています。AND 条件ですから、
1つでも不一致の場合には、検索されません、ということだと思います。

また one or more の訳については、前指摘「一つ以上」と同じですが、
今の場合、2文目の文章内の係り結びがたくさんになって、誤解釈を生みそうな気がします。
ここでの one or more は、all ではないことを言えば十分
(AND 条件になっていない状況を説明していれば十分)
と思うため、以下のような訳とします。

再訳
オプションではない引数のすべてに一致する名前だけを表示する。
つまり、オプションではない引数の一部にしか一致しなかったものは表示しない。


> 構成要素にマッチした場合に、出力結果としてマッチしたものとする。
> ->
> 構成要素に一致した場合に、出力結果として一致したものとする。

ご指摘納得します。修正します。


> マッチしたファイル名を出力するのではなく、マッチした
> ->
> 一致したファイル名を出力するのではなく、一致した

ご指摘納得します。修正します。


>[以下 matsuand が引用を補記]
>[原文]
> Instead of searching the default file name database, search the file
> name databases in \fIpath\fP, which is a colon-separated list of
> database file names.
>[旧訳]
> デフォルトのファイル名データベースを検索するのではなく、
> \fIpath\fP にあるファイル名データベースを検索する。
> 複数のデータベースファイルはコロンで区切って指定する。
> ->
> デフォルトのファイル名データベースを検索するのではなく、
> 複数のデータベースファイルをコロンで区切って指定した、
> \fIpath\fPにあるファイル名データベースを検索する。

これには異議あります。
まず旧訳は誤訳であると思います。その点をご指摘されたのでしょうか。
ただしご提案訳では、わかりにくいと思います。

ご提案訳では中ほどの
「複数のデータベースファイルをコロンで区切って指定した、」
が、次のどの語を修飾するのか、不明確に感じます。
どの語を修飾するか、その答えは path なのですが、それが読み手に
通じるでしょうか。

またご提案訳の冒頭は、まず
デフォルトの **ファイル名データベース** を検索するのではない、と表現、
次に **複数のデータベースファイル** をコロンで区切った、と表現、
最後に **ファイル名データベース** を検索、と表現。
読み手を翻弄しているかのようにも思えてしまいます。

「データベースファイル」と「ファイル名データベース」、
この2つの用語が不用意に並べられているような気がして、
誤解、あるいは不理解を生みそうに感じます。
原義はどちらも「ファイル名データベース」であり、さらに
前者は、そのファイル名データベースの具体的なファイル名のことです。

もろもろ勘案して、以下の訳とします。

再訳
デフォルトのファイル名データベースを検索するのではなく、
\fIpath\fP が表す複数のファイル名データベースを検索する。
\fIpath\fP では複数のデータベースファイル名をコロンで区切って指定する。


> このフォーマットによって、 バイトオーダーが異なるマシン間においても、
> ->
> この変更により、バイトオーダーが異なるマシン間においても、

ご指摘納得します。修正します。


> 古い locate のデータベースフォーマットへのサポートは、
> 今後のリリースにおいては継続しないかもしれない。
> ->
> 古い locate データベースフォーマットのサポートは、
> 今後のリリースで打ち切るかもしれない。

やや意義があります。
「打ち切る **かもしれない**」と訳すのは、原文が will でなく may で
ある場合と思います。 ここは will ですから、それよりも確実に意思がある
ものとして、「打ち切る **予定** です」としてよいと思います。

さらに「今後のリリース **で**」のように、助詞「で」が、
個人的趣向として、あまり好ましくなく思います。

再訳
古い locate データベースフォーマットのサポートは、
今後のリリースにおいて打ち切る予定です。


> マッチする数を N に制限する。
> ->
> 一致する数を N に制限する。

修正します。


> オプションによって表示される結果数は、
> ->
> オプションによって表示される結果の数は、

修正します。


> 通常 \fBlocate\fP は、 検索するデータベースが 8 日以上古かった場合に
> ->
> #これは検証が必要です。 more than なので、8日は含まないはず
> #なのですが、本当にそうかどうかは試さないと分かりません。

英文解釈的に "8日" は含まないので、「8日以上」は不適切とする考え
でよいと思います。実動作を見ることの方が面倒だったので、
さらっとだけソースを見ました。

warn_number_units なる変数が 8 日 と定義されていて (locate.c)
if (現在経過時間 > その変数) という条件判断を見つけました。
「>=」ではなく「>」であったということです。
(厳密には、この説明は正しくないのですが、そこまで詳述しません)
解釈に誤りはなく正しいと思います。

再訳
通常 \fBlocate\fP は、 検索するデータベースが 8 日前よりも古かった場合に

# ん? 上の表現、日本語の論理がおかしいですか?


> 同じ正規表現が用いられる。 ファイル名のフルパスが、 指定された正規表現にマッチするときに、
> ->
> 同じ正規表現が用いられる。 ファイル名のフルパスが、 指定された正規表現に一致するときに、

修正します。


> 必須の引数が指定されていなければ、
> ->
> オプション以外の引き数が指定されていなければ、
>
>
> 4.2.0 | glob 文字がファイル名全体にマッチするように。
> 4.2.0 | glob 文字がファイル名全体に一致するように。

修正します。



linuxjm-discuss メーリングリストの案内
Back to archive index