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.