Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 8 Mar 2015 16:22:49 +0700
From: Рысь <lynx@...server.ru>
To: musl@...ts.openwall.com
Subject: Re: libintl: stubs or working functions?

On Fri, 6 Mar 2015 17:24:15 -0500
Rich Felker <dalias@...c.org> wrote:

> On Thu, Mar 05, 2015 at 04:36:49PM +0700, Рысь wrote:
> > I noticed that musl had got some gettext functions as a lightweight
> > and more saner interface. However, I now have a couple questions
> > about them as ordinary user.
> > 
> > A bit of history.
> > I had successfully built and used custom x86 musl based X11 root
> > which uses both Xfbdev and Xorg servers on different machines. It
> > is based on my previous musl on servers experience, just added X11
> > and major gui libraries on top of it.
> > 
> > My root attracted a user because of it's small size to fit into
> > budget netbook with very small disk size (about 4GB I think). The
> > problem is that user does not speak (and understand) English at
> > all, but he accepts my preferred program set which I preinstalled
> > into root.
> > 
> > So I faced a problem: I had built this root for myself and
> > everywhere I did seen "--disable-nls" in configure scripts I used
> > it. Now, I tried to rebuild untranslated programs, noticed that
> > translation files (.po -> *.gmo) were created and installed
> > in /local/share/locale/.
> > 
> > However, trying to define LC_ALL and LANG environment variables as
> > in most of glibc systems does not change anything. The programs
> > still English translated.
> > 
> > And a couple questions here:
> > 
> > * Did I understand that right that I do not need GNU gettext
> > anymore and I can use musl's interface for that?
> 
> Yes, modulo some GNU software (coreutils for example) that probes for
> glibc/gnu-libintl internals at configure time and depends on
> poorly-designed and undocumented features (SYSDEP strings). These
> programs will not work without either GNU libintl or patching out the
> bad parts of configure and using a version of msgfmt that works around
> the need for SYSDEP strings. I believe the one from sabotage
> gettext-tiny does.
> 
> > * Do I still need original GNU gettext to translate *.po's to
> > *.gmo's? (I used gettext-tiny)
> 
> gettext-tiny is preferable as long as it works. As mentioned above it
> even works around the SYSDEP strings issue.
> 
> > * If musl can handle that, how I should configure it? Are
> > environment variables work?
> 
> For translations of musl itself (which don't exist yet) the
> MUSL_LOCPATH environment variable needs to be set. But most programs
> that use gettext hard-code their own pathnames for passing to
> bindtextdomain, and this is the documented correct way to use the API.
> So there is no default gettext path in musl.

Interesting. Well, than I need to investigate more. strace does not
show any tryings to find or even to poke at locale data installed by
application. nm output from binary does not show any "textd" pattern.
config.log then says NLS is supported via external libintl.a (did I do
a right thing by creating an empty libintl.a file to redirect libintl
functions to libc at link time?)

Probably application thinks it have found libintl, but for some reason
does not enable it's code.

> 
> > Whole story and questions may be stupid if I misunderstand the
> > purpose of those functions, so sorry.
> 
> Not stupid at all. Hope the above helps. Let me know if you have any
> more questions.

Okay. Sorry, as for now I did not read locale libc code fully and quite
do not understand it (I am in process of rebuilding my primary desktop
to move it to my mentioned musl root, that's quite of time consuming).

Example application of question is email client claws-mail (I even use
it now to send an email to you, so I can test it). On my system it's
locale data is stored
into /local/share/locale/ru/LC_MESSAGES/claws-mail.mo. On typical glibc
system I needed to set LC_ALL and LANG environment variables to
something like "ru_RU.UTF-8". What I should do with musl for _not
translating musl_, but for (probably) NLS-enabled external application?

And what symbols should I see in nm output for any application to
verify it actually uses NLS?

> 
> If you find that lack of translations for the messages from musl
> itself (errno strings, etc.) is a problem, I can try to help you with
> producing a locale file for musl. I want to get a musl-locales project
> started and it would be nice to have a trial run-through.
> 
> Rich

Thanks I will happy to at least try! You only should prepare exact
instructions and needed software so I can start work quickly :)

If I will catch time right I will try to reach you on IRC at least
within next week.

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.