On Sun, May 03, 2015 at 12:55:00PM +0300, Andrej N. Gritsenko wrote: > Hello! > > I have written on Sunday, 3 May, at 12:14: > >Eike Rathke has written on Saturday, 2 May, at 23:58: > >>On Saturday, 2015-05-02 13:32:23 +0100, acefael wrote: > > >>> [...] > >>> +"Many others not mentioned here contributed code, fixes," , > >>> +"and suggestions." }; > >>> > >>> - puts (_(Copyright)); > >>> + { > >>> + int csize = sizeof(Copyright)/sizeof(Copyright[0]); > >>> + int i; > >>> + for( i = 0 ; i < csize ; ++i ) { > >>> + puts (_(Copyright[i])); > >>> + } > >>> + } > > >>What you may not be aware of, the _() underscore function is a special > >>function for the gettext() translation process. AFAIK it does not work > >>with array elements this way (someone correct me if I'm wrong). > > > You are wrong. It works exactly that way. Although strings which are > >passed to invocation of _() should be marked for translation elsewhere by > >enclosing them into N_() which cannot translate static string, of course, > >but only marks the string. In the case above each element of Copyright[] > >array should be enclosed in N_() to be translated by _(). > > Although looking at the code again I'm afraid it will never work > since _(Copyright) and _(Copyright[i]) cannot be called at the same > program, because _() requires (char *) argument and if Copyright is a > (char *) array then _(Copyright[i]) will not work but if Copyright is > a (char **) array then _(Copyright) will not work. Therefore a whole > quoted code will fail to compile unless you supress errors, but if it > compiles then it would crash at runtime.
the diff removes "puts (_(Copyright));" and it adds the loop wherein it calls "puts (_(Copyright[i]));". agreed? > > With best regards, > Andriy.