SWAT i18n feature

TAKAHASHI Motonobu monyo at home.monyo.com
Sun Sep 7 15:39:23 GMT 2003


Hello,

I will fix SWAT i18n feature before shipping. 
This is now existing in the code but is not maintained because of 
my negligence.

Current status is:

1) d_printf() works well. This means we do not need to modify
   "functional" codes except BUG#412.

2) There are some wrong d_printf() calls.

3) msg files are not followed after the current codes. They must be
   updated.

4) msg files are not installed during "make install" into $libdir.

5) There are no documents about this feature.

To fix 2) and 3), I think the following works are needed. 

** I will create a patch for 2) and 3a) in this week. This will change
   some places of source code but will not change the functional
   codes. So I wish to commit this patch before shipping. **

** And will do 5) before shipping. **

About 2), for example swat.c:1180

   d_printf(_("Attempting to delete these printers from SWAT
   will have no effect.\n"));

  The '\' cannot be included in the messege string. So this d_printf()
  calls are not functional. There are some calls like this. They
  *should* be fixed to modify the d_printf() itself or to modify the
  messege strings.

About 3)
  To update the msg files, we have to know which strings should be
  included in the msg files. But currently we have to look at source
  codes and update msg files by hand. So we need the way to update msg
  files automatically.

  3a) pick up the replaceable strings

  Currently most of replaceable strings which should be included in
  msg files are marked: _() or N_(). but for example swat.c:575:
 
    d_printf("<H2>Wizard Parameter Edit Page</H2>\n");

  , there are some unmarked replaceable strings so we need to mark
  them.

  This will change the sources/web/{cgi.c,statuspage.c,swat.c} and
  sources/param/loadparm.c. This *should* be fixed.

  And we *had better* choose only one of _() or N_(). I will choose
  N_().

  3b) to add a script like "make update-po"

  we *should* have a script which pick up the marked strings and
  generate msg files. 

  Using gettext tools is easy to do this. This means we need to
  install GNU gettext only to update msg files. Of course we can
  replace this to the original script later.
  
  I am now using the attached ad-hoc script:
-----
#!/bin/sh

# placed into sources/po

FILES='../web/swat.c ../web/statuspage.c'
LANGS='en ja'

XGETTEXT=xgettext
MSGMERGE=msgmerge

$XGETTEXT --default-domain="i18n_swat" \
  --add-comments \
  --keyword=_ --keyword=N_  \
  $FILES

for lang in $LANGS; do
  mv ${lang}.msg ${lang}.msg.old
  $MSGMERGE ${lang}.msg.old i18n_swat.po -o ${lang}.msg
done
-----

  3c) remove meaningless d_printf()
  d_printf() must be used to the strings which can be changed from
  the browser's requested language. But do not need to use for example
  at swat.c:589:

        d_printf("<p>\n");

  We *had better* cleanup those to normal print_f().

  Also we *had better* remove unnecessary _() and N_().

-----
TAKAHASHI, Motonobu (monyo)                    monyo at home.monyo.com
                                               http://www.monyo.com/




More information about the samba-technical mailing list