On 2014/09/08 02:34, Anthony J. Bentley wrote:
> Landry Breuil writes:
> > On Thu, Sep 04, 2014 at 08:36:12AM -0400, Brian Callahan wrote:
> > > The preferences menuhas alot of things like
> > > preferencesMainTabtitle
> > > 
> > > I'm guessing that's because of the removal of 
> > > patch-gtk_res_options_gtk2_ui
> > > 
> > > I don't think it's a terribly bad thing though since the information isn't
> > > indiscernible.
> > 
> > yeah, this is a bit annoying and iirc we already looked into it without
> > a proper solution besides patching ... will give it a spin on powerpc.
> 
> $ wc -l /usr/ports/www/netsurf/browser/patches/patch-gtk_res_options_gtk2_ui
>     1078 /usr/ports/www/netsurf/browser/patches/patch-gtk_res_options_gtk2_ui
> 
> Sadly that's not really maintainable. And the patch doesn't apply with
> this release either.
> 
> http://bugs.netsurf-browser.org/mantis/view.php?id=2045
> 
> 2014-09-06 04:48 <kyllikki> bentley`: #2045 is relatively simple. The gtk
> library uses symbols from gettext specificaly gettext(), dgettext(),
> dcgettext() when NetSurf links to GTK we provide our own implementation
> in gtk/gettext.[ch] at no point do we ever ask for linkikage of the
> gettext library
> 
> Antoine says our linking of gettext with GTK is correct, so I guess we
> just have to tell the linker to prefer NetSurf's gettext symbols instead?
> What's the way to do that?
> 
> -- 
> Anthony J. Bentley
> 

So this problem is caused by NetSurf doing internationalisation support
in a different way than is done in most other software. They are trying to
override the *gettext() functions which are used by gtk with their own
version.

On Linux (and AIUI Solaris), gettext / dgettext / dcgettext usually come
from libc where they are weak symbols, and libintl is not used. In this case
they are overridden by the symbols provided by netsurf.

With libintl that we're using, these symbols are not weak so the library
versions take priority over the same-named functions in netsurf, and of
course the library versions work in the normal way rather than the special
way that NetSurf's use.

There are some suggestions for getting around this in
http://stackoverflow.com/questions/617554/override-a-function-call-in-c -
and you may be able to do something with wrapper functions and the --wrap
linker flag, though I think this is going to be fairly messy and quite
likely not something that can go upstream (seems that --wrap is specific
to the GNU linker).

Otherwise I wonder if it's possible to convert the resources/FatMessages
file to a standard .mo and install that, so that the normal gettext
library can use it.

Reply via email to