[erlang-questions] Best Practices: Localization of Erlang Applications. Also, Error Messages!

Håkan Stenholm hokan.stenholm@REDACTED
Fri Jul 15 01:16:06 CEST 2011

The thread "[erlang-questions] utf-8 PB" in the erlang mailing list 
(archive) during 2010-06-16/17/18 may be of interest to you.
I (Håkan Stenholm) wrote a bunch of replies about using gettext and .po 
files in that thread.

I used to work with internationalization/localization issues at Klarna 
back in 2005-2010, but not having worked there (or with erlang) since 
2010-04 makes me fairly useless as a source for current information.

On 2011-07-14 16.46, Alex Arnon wrote:
> On Thu, Jul 14, 2011 at 3:33 PM, Richard Carlsson 
> <carlsson.richard@REDACTED <mailto:carlsson.richard@REDACTED>> wrote:
>     On 07/13/2011 09:19 PM, Alex Arnon wrote:
>         We're building a nontrivial Erlang application, which will
>         provide a
>         potentially high-volume, public RESTful Web Service. As part
>         of the API,
>         we will be providing both informative text (status, labels, layout
>         templates) and error messages. A twofold question, then, to the
>         experienced Grandmasters in the audience:
>         1. How have you implemented localization of text? This includes
>         parameterized format strings.
>     At Klarna we are using (and maintaining) the gettext library, and
>     it works very well. You'll find the latest version at
>     https://github.com/etnt/gettext - the version at Jungerl is very
>     much out of date.
>     In particular, you'll probably want to use the new (not yet
>     documented) macro ?STXT(...) instead of the ?TXT(...) macro. This
>     is less error prone, since the fields and their meaning are more
>     easily identified and do not have to be listed in order of
>     occurrence. For example:
>      ?STXT("Hello, $name$! Today's date is $date$ and the time is
>     $time$.",
>            [{date, current_date_as_string()},
>             {time, current_time_as_string(),
>             {name, customer_name(CustomerID)}])
>     For the documentation (not very up to date, sorry), run 'make
>     docs' and open doc/index.html in a browser.
>     Tobbe also made some support for gettext in rebar:
>     http://www.redhoterlang.com/entry/138dc1b1f8720f5c4f38864e4f0c338f
>     To make it easier to actually get the translations into the
>     system, or update translations as the original text changes, you
>     may also want to use the Polish tool:
>     http://www.redhoterlang.com/entry/8af2641026c0dfa27e54cb0da57eb392
>     http://www.youtube.com/watch?v=UdhE2YOkBCU
>     http://www.redhoterlang.com/entry/98951c7196e0d91999bb238de5defe47
> Thank you, this looks promising!
>         2. Has anyone used composite error values? For example, instead of
>         {error, badarg}, use {error, {badarg, [{arg, ArgumentName},
>         {message,
>         LocalizedMessageId}, {message_args, [...]}... Should we steer
>         clear of
>         these, and if so, what alternative would you suggest?
>     Who is expected to read these messages? End users, or developers?
>     For developers, it's better if the message is in plain English.
>     First, you may have people from different countries working on
>     your code. Second, it's harder to google for the error message if
>     the one you got was in Spanish, but the only people who have
>     previously reported the problem got their messages in German. At
>     the very least, always provide a summary or short identifier in
>     English.
>        /Richard
> I was thinking of two purposes for the structured Reason:
> 1. The error handling code - which may receive extra information 
> regarding the error itself.
> 2. Logging code - the handling code can forward the error to a logger, 
> with attached message format + args etc.
> Localization of the message is probably pointless, I agree - I kind of 
> overloaded [2] with [1]. :)
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20110715/1c595105/attachment.htm>

More information about the erlang-questions mailing list