This directory contains simple examples of the use of GNU gettext.
Each example is a simple "hello world" program with a very small message
catalog, written in a particular programming language for a particular
environment.

    Example                    Language          GUI Environment

    hello-c                    C
    hello-c-gnome2             C                 GNOME 2 (obsolete)
    hello-c-gnome3             C                 GNOME 3.10 or later
    hello-c-http               C                 web browser
    hello-c++                  C++
    hello-c++20                C++ 20
    hello-c++-qt               C++               Qt
    hello-c++-kde              C++               KDE
    hello-c++-gnome2           C++               GNOME 2 (obsolete)
    hello-c++-gnome3           C++               GNOME 3.10 or later
    hello-c++-wxwidgets        C++               wxWidgets
    hello-objc                 ObjectiveC
    hello-objc-gnustep         ObjectiveC        GNUstep
    hello-objc-gnome2          ObjectiveC        GNOME 2 (obsolete)
    hello-python               Python
    hello-java                 Java
    hello-java-awt             Java              AWT
    hello-java-swing           Java              Swing
    hello-java-qtjambi         Java              Qt
    hello-csharp               C#
    hello-csharp-forms         C#                Forms
    hello-guile                Scheme
    hello-clisp                Lisp
    hello-librep               librep
    hello-rust                 Rust
    hello-go                   Go
    hello-go-http              Go                web browser
    hello-ruby                 Ruby
    hello-sh                   Shell
    hello-gawk                 awk
    hello-pascal               Pascal
    hello-modula2              Modula-2
    hello-d                    D
    hello-smalltalk            Smalltalk
    hello-tcl                  Tcl
    hello-tcl-tk               Tcl               Tk
    hello-perl                 Perl
    hello-php                  PHP
    hello-ycp                  YCP               libyui

Before building an example, you need to
  1. Build and install the GNU gettext package, as described in the INSTALL
     file.
  2. cd to the example and do
        ./autogen.sh
  3. Then you can build the example as usual:
        ./configure --prefix=/some/prefix
        make
        make install
     and see it work by executing
        /some/prefix/bin/hello

The po/ directories of the examples use different binary catalog formats and
Makefile types:

    Example                    Binary catalog format   Makefile type

    hello-c                    .gmo                    Makefile.in.in
    hello-c-gnome2             .gmo                    Makefile.in.in
    hello-c-gnome3             .gmo                    Makefile.in.in
    hello-c-http               .gmo                    Makefile.in.in
    hello-c++                  .gmo                    Makefile.in.in
    hello-c++20                .gmo                    Makefile.in.in
    hello-c++-kde              .gmo                    Makefile.in.in
    hello-c++-gnome2           .gmo                    Makefile.in.in
    hello-c++-gnome3           .gmo                    Makefile.in.in
    hello-objc                 .gmo                    Makefile.in.in
    hello-objc-gnome2          .gmo                    Makefile.in.in
    hello-c++-wxwidgets        .gmo                    Makefile.am
    hello-python               .gmo                    Makefile.am
    hello-guile                .gmo                    Makefile.am
    hello-clisp                .gmo                    Makefile.am
    hello-librep               .gmo                    Makefile.am
    hello-rust                 .gmo                    Makefile.am
    hello-go                   .gmo                    Makefile.am
    hello-go-http              .gmo                    Makefile.am
    hello-ruby                 .gmo                    Makefile.am
    hello-sh                   .gmo                    Makefile.am
    hello-gawk                 .gmo                    Makefile.am
    hello-pascal               .gmo                    Makefile.am
    hello-modula2              .gmo                    Makefile.am
    hello-d                    .gmo                    Makefile.am
    hello-smalltalk            .gmo                    Makefile.am
    hello-perl                 .gmo                    Makefile.am
    hello-php                  .gmo                    Makefile.am
    hello-ycp                  .gmo                    Makefile.am
    hello-java                 .properties             Makefile.am
    hello-java-awt             .properties             Makefile.am
    hello-java-swing           .properties             Makefile.am
    hello-java-qtjambi         .properties             Makefile.am
    hello-csharp               .resources.dll          Makefile.am
    hello-csharp-forms         .resources.dll          Makefile.am
    hello-tcl                  .msg                    Makefile.am
    hello-tcl-tk               .msg                    Makefile.am
    hello-c++-qt               .qm                     Makefile.am
    hello-objc-gnustep         .strings                GNUmakefile

The Makefiles in the po/ directories make use of the variable assignment
operator != standardized by POSIX:2024
<https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html>.
They thus require a 'make' implementation that supports this operator !=.
As of 2024, these are: GNU make >= 4.0, FreeBSD make, NetBSD make,
OpenBSD make. This means that building on specific platforms requires
use of GNU make:
  - On macOS, use /opt/homebrew/bin/gmake.
  - On Solaris 11 OpenIndiana, use /usr/bin/gmake = /usr/gnu/bin/make.
  - On Solaris 11.4, install GNU make yourself.
  - On AIX, use /opt/freeware/bin/make.
