[Haskell] I18N, external strings

Axel Simon A.Simon at kent.ac.uk
Fri Nov 17 03:27:00 EST 2006


A comment on gettext,

On Nov 15, 2006, at 17:35, Stefan Aeschbacher wrote:

> Hi
>
> there is a project for i18n on sourceforge. It contains for example  
> bindings to the gettext library which could be helpful. I'm not sure  
> though how up to date this project is (project page looks very empty).
> The code is still available in the sourceforge cvs repository:
>
> http://haskell-i18n.cvs.sourceforge.net/haskell-i18n/
>
I think gettext would be a very nice thing to use in Haskell. At the  
moment, it is slightly inefficient to lookup a string in order to  
substitute it for a translation. For instance, say l_ is your  
translations function, saying

(l_ "Translate this")

is compiled into a C string constant, that GHC then turns lazily into a  
list of characters, which l_ then turns into an array in C land to pass  
to the gettext function, which, in turn, returns a new C string array  
that has to be turned into a Haskell string again. So I'm glad Lennart  
proposed to turn String into a class which would then make it possible  
to pass a pointer to a contant C string to gettext.


Axel.

> Stefan
>
> 2006/11/15, Johannes Waldmann <waldmann at imn.htwk-leipzig.de >:
>>
>> (I.e. I want output in several languages,
>> with the language configurable at runtime,
>> and I want to add languages without recompilation.)
>>
>>  a typical source text (for my application) is here
>> MailScanner warning: numerical links are often malicious:  
>> http://141.57.11.163/cgi-bin/cvsweb/tool/src/Graph/Circle/Plain.hs? 
>> rev=1.2
>> it contains (German) text strings all over the place.
>>
>> In Java/Eclipse, I would "Source -> Externalize Strings"
>> and this replaces each string by something like
>> Messages.getString("Foobar.0")  where  Messages  is a global variable
>> (constructed at program start from reading a properties file)
>>
>> In Haskell, I see at least two problems:
>> a) reading the file is in IO
>> b) there are no "global variables". implicit parameters perhaps?
>> c) when I'm trying to be clever, I use "deriving Show/Read" or  
>> similar.
>> then i18n should rename the constructors/accessors? I rather not.
>> MailScanner warning: numerical links are often malicious:  
>> http://141.57.11.163/cgi-bin/cvsweb/tool/src/Grammatik/Type.hs.drift? 
>> rev=1.6
>>
>> Best regards,
>> --
>> -- Johannes Waldmann -- Tel/Fax (0341) 3076 6479/80 --
>> ---- http://www.imn.htwk-leipzig.de/~waldmann/ -------
>>
>> _______________________________________________
>> Haskell mailing list
>> Haskell at haskell.org
>>  http://www.haskell.org/mailman/listinfo/haskell
>
> _______________________________________________
> Haskell mailing list
> Haskell at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell



More information about the Haskell mailing list