namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: i18n (Re: gettext)



Ryuji Abe <raeva@xxxxxxxxxxxx> wrote:

>少し前のコードを取ってきて、手元でconfigure.inとMakefile.amを修正
>してmakeしたのですが、以下のようにエラーが出ましたので確認をお願い
>します。

デバッグ用の printf ということで、 dprintf という関数を作っ
たのですが、これの名前が衝突しているようですね。

>In file included from cgi.c:34:
>util.h:68: conflicting types for `dprintf'
>/usr/include/stdio.h:159: previous declaration of `dprintf'

とりあえず dprintf -> debug_printf に名前を変えて commit し
ておきました。


>あとconfigureとMakefile.amの変更は先程commitしました。

./configure で既存の libintl.a を検出しても LIBS に -lintl 
が設定されないという問題はどうすればいんでしょうね。 LIBS に 
-lintl が設定されない割には config.h に

  #define ENABLE_NLS 1
  #define HAVE_GETTEXT 1
  #define HAVE_LC_MESSAGES 1

と設定してくれるので、 make すると undefined reference to
`gettext' ででこけてしまいます。

  ...

一方、sh-utils-2.0 の configure は次のように賢く設定していま
す。Namazuの configureも同じ挙動にしたいのだけど、どうすれば
いいのだろう。

# 私は configure の挙動をちょっと追いかけてみたけど、途中で
# 嫌になってあきらめました。ここはautoconf/automake の達人、
# 安部さんに望みを託すしかないのでは? という気分です。:-)


1. ./configure  
    a. /usr/local/lib/libintl.a が存在するとき
       - LIBS に -lintl が設定される
         LDADD の @INTLLIBS@ は空になる
    b. /usr/local/lib/libintl.a が存在しないとき
       - LIBS に -lintl は設定されない
         LDADD の @INTLLIBS@ が $(top_builddir)/intl/libintl.a
         に置き換わる。 make 時には intl/libintl.a が作られる
  
2. ./configure --with-included-gettext
    - LIBS に -lintl は設定されない
      LDADD の @INTLLIBS@ が $(top_builddir)/intl/libintl.a
      に置き換わる。make 時には intl/libintl.a が作られる
  
3. ./configure --disable-nls
    - LIBS に -lintl は設定されない
      LDADD の @INTLLIBS@ は空になる
      => 要するに、 gettext化されない。

p.s.
UNIX MAGAZINE 10月号に Namazu が紹介されているようです。:-)

-- Satoru Takabayashi