Skip to content

Commit

Permalink
readme: announce the fisrt edition of readme
Browse files Browse the repository at this point in the history
made by rofl0r
  • Loading branch information
xhebox committed Jul 29, 2017
1 parent f8e1033 commit d2fa20e
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Intro
gettext-tiny provides lightweight replacements for tools typically used
from the `GNU gettext` suite, which is incredibly bloated and takes
a lot of time to build (in the order of an hour on slow devices).
the most notable component is `msgfmt` which is used to create binary
translation files in the `.mo` format out of textual input files in
`.po` format. this is the most important tool for building software from
source, because it is used from the build processes of many software packages.

our `msgfmt` implementation was initially a fake implementation that would
just output the english input string as the translation, which is sufficient
to get software to work, but it has since grown into a complete implementation.
unlike the GNU implementation, it can even expand input strings containing
so-called `sysdep` strings into a constant translation table.
`sysdep` strings were glued as an after-thought onto the GNU implementation to
deal with system-specific format strings, and in the GNU implementation those
are created at runtime, which requires mapping the entire `.mo` file into
read/write memory locations, thereby wasting precious RAM for read-only data
that could otherwise be shared among processes.

other parts of gettext-tiny such as `xgettext` and `msgmerge` are still stubs,
but they are sufficient to build many packages.

since `musl` libc, our preferred target, didn't provide a `libintl` in the past,
(and it's also part of `GNU gettext`) we also ship a no-op libintl providing
a header and a library.

it comes in two flavours:

1) nop: gettext functions just return the input string as translation
2) musl: a compat library providing a few compatibility symbols meant to be used
together with the libintl built-in into recent musl versions.
the compatibility symbols help to get past configure scripts that insist on
using only the GNU gettext suite.
additionally, it can be entirely disabled.


# Compilation/Installation

```
make LIBINTL=FLAVOR
make DESTDIR=pkgdir prefix=/ install
```

where FLAVOR can be one of NONE, MUSL, NOOP (as detailed above).
you can override any variables used in the Makefile (such as `CFLAGS`) by
appending them to the `make` invocation, or by saving them into a file called
`config.mak` before running `make`.

0 comments on commit d2fa20e

Please sign in to comment.