fml 8 tutorial
Prev | Chapter 34. Manipulate Message (Mail Message) | Next

# Discussion: How To Send Back Language Dependent Error Mesages

fml needs to send back language dependent error messages. How we should implement it ?

(Below, just a discussion not implemation in fact.)

## fml4 Case

In the case of fml4, fml4 calls language dependent message converter like this:

       Mesg(*e, KEYWORD, DEFAULT MESSAGE, ARGUMENT);

Mesg() searches the specified keyword in files under /usr/local/fml/messages/Japanese/ directory. Each file contains messages with keywords to be substituted properly.

For example, the keyword not_found matches not_found entry in /usr/local/fml/messages/Japanese/kern file.

## What fml8 Should Do ?

"One file has one keyword" and "one file for one category, so one file contains plural entries". Hmm, which is better? I don't determine it.

### X/Open Portability Guide Issue 4 Version 2 (``XPG4.2'')

If you use XPG (X/Open standard),

    catgets(catd, set_id, msg_id, char *s);

function converts the message specified by LOCALE_XXX. [1] For example, the usage is as follows:

    printf(catgets(catd, 30,  4,  "%s: Internal match error.\n"), progname);

This function uses set 30 and entry 4 in the local definition file such as /usr/pkg/share/nls/ja_JP.EUC/PROGNAME.cat.

### fml8: Design (Temporary ?)

One problem is whether we should use locale or not ? In considering CUI e.g. makefml, it is better to use locale. For example, prepare

    /usr/local/lib/fml/$fml_version/messages/ja_JP.EUC/kern

    1: %s not found
    2: %s (error number = %d)

.

Instead, one file for one message may be useful. Especially it is easy we can customize only one message.

To try the latter case, we can prepare a lot of classes such as

    FML::Message::ja::KEYWORD

For example, there are 200 or 300 files such as

    FML::Message::ja::not_found

.

This methods has the following problems:

- separete files but in contrast more customizable.

- locale friendly? may be no.

Consider an example. In the latter case, the message module will be like this?

    sub not_found
    {
       my ..  = @_;

       return <<"_EOF_"
    $sender is ... something ...
    _EOF_
    }

Hmm, is it good ???

### Notes

[1] | "s" is the default message.

Prev | Home | Next
Message Internationalization: The Usage Of reply_message_nl() | Up | Filter

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.