The idea is to include consistency check to warn the user if he is not
using it properly, instead of silently misbehaving;

Updated code style to use Autoconf macros for consistency.

Took opportunity to remove the hacky setting inside 'config-paths.h' where
it is a bit out of place, in favour of a standard DEFINE in the 'config.h'.

Include in the i18n documentation the explanation on how Window Maker
translates the menus, both when the 'menu-textdomain' option is used and
when it is not.

Signed-off-by: Christophe CURIS <christophe.cu...@free.fr>
---
 Makefile.am                 |  7 -------
 configure.ac                | 11 +----------
 doc/build/Translations.texi | 37 +++++++++++++++++++++++++++++++++++++
 m4/wm_i18n.m4               | 22 ++++++++++++++++++++++
 4 files changed, 60 insertions(+), 17 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index af8a64d..351d0db 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,13 +12,6 @@ config-paths.h: Makefile
        @echo "Generating $@"
        @echo '/* this is a generated file - do not edit */' > $@
        @echo '' >> $@
-       @echo '/* gettext domain used for menu translations */' >> $@
-       @if test -z "$(menutextdomain)"; then \
-         echo '/* #undef MENU_TEXTDOMAIN "$(menutextdomain)" */' >> $@; \
-       else \
-         echo '#define MENU_TEXTDOMAIN "$(menutextdomain)"' >> $@; \
-       fi
-       @echo '' >> $@
        @echo '/* define where the translations are stored */' >> $@
        @echo '#define LOCALEDIR "$(localedir)"' >> $@
        @echo '' >> $@
diff --git a/configure.ac b/configure.ac
index b13d3b4..53e95b4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -418,6 +418,7 @@ dnl Detect the language for translations to be installed 
and check
 dnl that the gettext environment works
 WM_I18N_LANGUAGES
 WM_I18N_XGETTEXT
+WM_I18N_MENUTEXTDOMAIN
 
 dnl 2014/12/29: The option is deprecated, we should keep this message for at
 dnl least 2 years to ensure users see it and update their build scripts
@@ -425,16 +426,6 @@ AC_ARG_WITH([nlsdir], [],
     [AC_MSG_ERROR([option '--with-nlsdir' is deprecated, please use autoconf's 
standard '--localedir' instead])])
 
 
-menutextdomain=
-AC_ARG_WITH(menu-textdomain, AS_HELP_STRING([--with-menu-textdomain=DOMAIN], 
[specify gettext domain used for menu translations]),
-       [if test "x$withval" != "xno"; then
-         menutextdomain=$withval
-        fi])
-AC_SUBST(menutextdomain)
-
-AC_SUBST(NLSDIR)
-
-
 dnl ===========================================
 dnl            Stuff that uses X
 dnl ===========================================
diff --git a/doc/build/Translations.texi b/doc/build/Translations.texi
index 995da7a..64168f5 100644
--- a/doc/build/Translations.texi
+++ b/doc/build/Translations.texi
@@ -114,6 +114,43 @@ The installation directory can be changed with the 
standard option @option{--loc
 @file{@emph{<prefix>}/share/locale/@emph{<lang>}/LC_MESSAGES}).
 
 
+@c ---------------------------------------------------------------------- 
Translations for Menus ---
+@section Translations for Menus
+
+In order to propose an @emph{Application Menu} (also called @emph{Root Menu}) 
that is also
+translated in the language of the interface, @sc{Window Maker} implements two 
complementary
+mechanisms:
+
+The first, always enabled when i18n support is enabled, is to look for the 
menu file containing the
+name of the locale.
+For example, if the file is called @file{menu} and the language is set as 
@env{LANG=fr_FR.utf-8},
+then @sc{Window Maker} will search for, and use the first match found:
+
+@itemize
+@item @code{menu.fr_FR.utf-8}
+@item @code{menu.fr_FR}
+@item @code{menu.fr}
+@item @code{menu}
+@end itemize
+
+The second possibility, which is not enabled by default, is to be able to use 
a custom @file{po}
+file which contains the translations for the text of the menu.
+This feature is enabled at compile time, using the option 
@option{--with-menu-textdomain} to the
+@command{configure} script. For example, if you specify:
+
+@example
+./configure --with-menu-textdomain=WMMenu
+@end example
+
+@noindent then the translations for the menu will be searched in the file 
@file{WMMenu.mo} located
+at the standard location, the default path being
+@file{@emph{<prefix>}/share/locale/@emph{<lang>}/LC_MESSAGES/@emph{WMMenu}.mo}.
+
+If you do not enable the feature (the default behaviour, or with an explicit
+@option{--without-menu-textdomain}), then @sc{Window Maker} will @b{not} try 
to translate the
+strings, even using its own domain file (@file{WindowMaker.mo}).
+
+
 @c --------------------------------------------------------------------- 
LINGUAS at system level ---
 @section Setting @env{LINGUAS} at system level
 
diff --git a/m4/wm_i18n.m4 b/m4/wm_i18n.m4
index 88dc70e..41cb84d 100644
--- a/m4/wm_i18n.m4
+++ b/m4/wm_i18n.m4
@@ -113,3 +113,25 @@ AS_IF([test "x$XGETTEXT" != "x"],
          XGETTEXT=""]))
 AM_CONDITIONAL([HAVE_XGETTEXT], [test "x$XGETTEXT" != "x"])dnl
 ])
+
+
+# WM_I18N_MENUTEXTDOMAIN
+# ----------------------
+#
+# This option allows user to define a special Domain for translating
+# Window Maker's menus. This can be useful because distributions may
+# wish to customize the menus, and thus can make them translatable
+# with their own po/mo files without having to touch WMaker's stuff.
+AC_DEFUN_ONCE([WM_I18N_MENUTEXTDOMAIN],
+[AC_ARG_WITH([menu-textdomain],
+    [AS_HELP_STRING([--with-menu-textdomain=DOMAIN],
+        [specify gettext domain used for menu translations])],
+    [AS_CASE([$withval],
+        [yes], [AC_MSG_ERROR([you are supposed to give a domain name for 
'--with-menu-textdomain'])],
+        [no],  [menutextdomain=""],
+        [menutextdomain="$withval"])],
+    [menutextdomain=""])
+AS_IF([test "x$menutextdomain" != "x"],
+    [AC_DEFINE_UNQUOTED([MENU_TEXTDOMAIN], ["$menutextdomain"],
+        [gettext domain to be used for menu translations]) ])
+])
-- 
2.1.4


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to