[JM:02996] Re: [POST:DP] GNU gettext msgfmt.1

Back to archive index
matsuand michi****@gmail*****
2021年 10月 14日 (木) 10:49:12 JST


On Thu, Oct 14, 2021 at 2:29 AM IIJIMA Hiromitsu
<delmo****@denno*****> wrote:
>
> いいじまです。
>
> > > > .\"O ----------------------------------------
> > > > .\"O .TP
> > > > .\"O \fB\-a\fR, \fB\-\-alignment\fR=\fI\,NUMBER\/\fR
> > > > .\"O align strings to NUMBER bytes (default: 1)
> > > > .TP
> > > > \fB\-a\fP, \fB\-\-alignment\fP=\fI\,NUMBER\/\fP
> > > > 文字に対して NUMBER バイトを割り当てます (デフォルト: 1)。
> > >
> > > 文字→文字列 かな?
> > >
> > > そもそもこのオプションを理解していないので、
> > > 適切なコメントができていないかもしれません。
> >
> > 原文が strings なので「文字列」とします。
> > 処理内容はソースを見ても、よくわかりませんでした。
> > 文字列を出力する際のバッファサイズ(あるいは出力幅)
> > を定めているのか、と推測します。
> >
> > 再訳
> > 文字列に対して NUMBER バイトを割り当てます
> > (デフォルト: 1)。
>
> バイト列に対してalignmentという場合、「各要素のサイズが既定のバイト数の倍数になるように調整する」という意味が強いです。ついでにいうと align X to Y bytes は「XをYバイトの位置に揃える」です。「XにYバイトを割り当てる」なら「allocate Y bytes to X」になるはずです。
...

詳細な説明、ありがとうございます。
雰囲気は分かりました。
内容の正確な理解には至っていません。

ただし当該訳の結論としては、原文がさらっとしか
表現されておらず、info ドキュメントも全く同じです。
「バイト数の倍数になるように調整する」といったような、
本質を訳出したとしても、かえって何が何やら読者には
わからなくなると思いますので、処理結果が具体的に
何をやっているのかの理解とは別にして、
邦訳は無難にさらっと訳すのが適当かと思います。

以下のようにしようと思います。

再訳
文字列に対して、NUMBER 分の配置 (alignment) を行う。

---
もしお調べ頂ける方がおられるようでしたら、
以下に補足情報です。

該当ソースは gettext-0.21/gettext-tools/src/write-mo.c
で、グローバル変数 alignment、関数 roundup などが
キーワードになると思います。

また簡便な処理確認として、どこにでも落ちている
ja.po をコピーしてきて、以下の Makefile
 all: message32.mo message01.mo
 message32.mo: ja.po
        msgfmt -a 32 -o $@ $^
 message01.mo: ja.po
        msgfmt -o $@ $^
で make したときの message{01,32}.mo を
比較すると、結果確認ができると思います。

強引に diff -au message{01,32}.mo とすると、
文字列部分にヌルバイトが所定数含まれている
ことが見て取れます。違うということは分かりますが、
私にはどう計算して良いのやら、という感じなので、
私の確認はここまでとさせていただきます。


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