# gettext-sys Raw FFI bindings for gettext. Please see [documentation](https://docs.rs/gettext-sys) for details. ## Licensing On platforms that don't have a native gettext implementation, this crate compiles GNU gettext, which is licensed under LGPL. This means **you have to abide by LGPL**. If you don't want or can't do that, there are two ways out: 1. in a GNU environment, enable `gettext-system` feature (see below); 2. dynamically link to GNU gettext library you obtained by some other means, like a package manager. See environment variables below. ## Features - `gettext-system`: if enabled, _asks_ the crate to use the gettext implementation that's part of glibc or musl libc. This only works on: * Linux with glibc or musl libc; * Windows + GNU (e.g. [MSYS2](https://www.msys2.org/)) with `gettext-devel` installed e.g. using: ``` pacman --noconfirm -S base-devel mingw-w64-x86_64-gcc libxml2-devel tar ``` * FreeBSD with GNU gettext installed as a package or port; If none of those conditions hold, the crate will proceed to building and statically linking its own copy of GNU gettext! ## Environment variables - `GETTEXT_SYSTEM`: same as enabling `gettext-system` feature (see above). - `GETTEXT_DIR`: if specified, a directory that will be used to find gettext installation. It's expected that under this directory, the _include_ folder has header files, the _bin_ folder has gettext binary, and a _lib_ folder has the runtime libraries. - `GETTEXT_LIB_DIR`: if specified, a directory that will be used to find gettext libraries. Overrides the _lib_ folder implied by `GETTEXT_DIR` (if specified). - `GETTEXT_INCLUDE_DIR`: if specified, a directory that will be used to find gettext header files. Overrides the _include_ folder implied by `GETTEXT_DIR` (if specified). - `GETTEXT_BIN_DIR`: if specified, a directory that will be used to find gettext binaries. Overrides the _bin_ folder implied by `GETTEXT_DIR` (if specified). - `GETTEXT_STATIC`: if specified, gettext libraries will be statically rather than dynamically linked. This only affects `GETTEXT_DIR` and `GETTEXT_*_DIR` scenarios; the default behaviour and `GETTEXT_SYSTEM` still use static and dynamic linking respectively. - `NUM_JOBS`: sets the number of parallel build jobs. - `TMPDIR` (on Unix), `TMP`, `TEMP`, `USERPROFILE` (on Windows): set the parent directory for the temporary build directory. GNU gettext uses autotools, which [don't allow some characters][chars] in paths, notably a space character. To get around that, this crate performs the build in a temporary directory which usually resides somewhere under _/tmp_ or _C:\\Temp_. The aforementioned env vars allow you to move the build directory elsewhere. [chars]: https://www.gnu.org/software/autoconf/manual/autoconf-2.60/autoconf.html#Special-Chars-in-Variables For target-specific configuration, each of these environment variables can be prefixed by an upper-cased target, for example, `X86_64_UNKNOWN_LINUX_GNU_GETTEXT_DIR`. This can be useful in cross compilation contexts. This doesn't work on AppVeyor ATM. Use `SET GETTEXT_SYSTEM=true` instead.