mirror of
https://github.com/gryf/wmaker.git
synced 2026-01-31 13:05:52 +01:00
configure: rewrote the support for languages in localisation
The code was moved to a dedicated file (wm_i18n.m4) to reduce the size of configure.ac; It now searches for gettext+libintl only if LINGUAS is specified, because there is no need for them otherwise; The list of supported locales is created automatically from the list of files present in the source tree, so there won't be problem forgetting to update the variables when a new language is added, or removed because one is considered outdated; The new syntax is now using as much as possible Autoconf's syntax to ensure consistency and better portability; Took opportunity to improve the language check loop to make it smaller and to tell when a locale that the user asked for is not fully supported. Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
This commit is contained in:
committed by
Carlos R. Mafra
parent
6efbb812b0
commit
80e00c3521
@@ -1,6 +1,6 @@
|
|||||||
DOMAIN = WPrefs
|
DOMAIN = WPrefs
|
||||||
|
|
||||||
CATALOGS = @WPMOFILES@
|
CATALOGS = @WPREFSMOFILES@
|
||||||
|
|
||||||
nlsdir = $(NLSDIR)
|
nlsdir = $(NLSDIR)
|
||||||
|
|
||||||
|
|||||||
117
configure.ac
117
configure.ac
@@ -411,16 +411,13 @@ dnl ==========
|
|||||||
AC_CHECK_PROG([PKGCONFIG], [pkg-config], [pkg-config])
|
AC_CHECK_PROG([PKGCONFIG], [pkg-config], [pkg-config])
|
||||||
|
|
||||||
|
|
||||||
dnl gettext
|
|
||||||
dnl =======
|
|
||||||
|
|
||||||
dnl AM_GNU_GETTEXT
|
dnl Internationalization
|
||||||
|
dnl ====================
|
||||||
|
dnl Detect the language for translations to be installed and check
|
||||||
|
dnl that the gettext environment works
|
||||||
|
WM_I18N_LANGUAGES
|
||||||
|
|
||||||
INTLIBS=""
|
|
||||||
|
|
||||||
AC_CHECK_FUNC(gettext, [HAVEGETTEXT="yes"],
|
|
||||||
AC_CHECK_LIB(intl, gettext, [INTLIBS="-lintl" HAVEGETTEXT="yes"],
|
|
||||||
INTLIBS="" ))
|
|
||||||
|
|
||||||
AC_CHECK_PROG(XGETTEXT, xgettext, xgettext)
|
AC_CHECK_PROG(XGETTEXT, xgettext, xgettext)
|
||||||
|
|
||||||
@@ -431,81 +428,6 @@ if test "$XGETTEXT" != ""; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$LINGUAS" != ""; then
|
|
||||||
if test "$XGETTEXT" != "" -a "$HAVEGETTEXT" != ""; then
|
|
||||||
AC_DEFINE(I18N, 1, [Internationalization (I18N) support (set by configure)])
|
|
||||||
PO=""
|
|
||||||
echo "xgettext and gettext() exist; will build i18n support for $LINGUAS"
|
|
||||||
else
|
|
||||||
LINGUAS=""
|
|
||||||
PO=""
|
|
||||||
echo "xgettext and libintl.a don't both exist; will not build i18n support"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
INTLIBS=""
|
|
||||||
MOFILES=""
|
|
||||||
WPMOFILES=""
|
|
||||||
UTILMOFILES=""
|
|
||||||
PO=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
dnl The Tower of Babel
|
|
||||||
dnl ==================
|
|
||||||
|
|
||||||
dnl List of supported locales
|
|
||||||
dnl =========================
|
|
||||||
supported_locales="be bg bs ca cs da de el es et fi fr gl hr hu hy it ja ko ms nl no pl pt ro ru sk sv tr zh_CN zh_TW"
|
|
||||||
supported_wprefs_locales="bg ca cs de es et fi fr hr hu it ja ko nl pt ru sk zh_CN zh_TW"
|
|
||||||
supported_wings_locales="bg ca cs de fr hu nl sk"
|
|
||||||
supported_util_locales="de es fr nl pt"
|
|
||||||
|
|
||||||
for lang in $LINGUAS; do
|
|
||||||
ok=0
|
|
||||||
for l in $supported_locales; do
|
|
||||||
if test "$l" = "$lang"; then
|
|
||||||
ok=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test "$ok" = 1; then
|
|
||||||
MOFILES="$MOFILES $lang.mo"
|
|
||||||
else
|
|
||||||
echo "Locale $lang is not supported."
|
|
||||||
fi
|
|
||||||
ok=0
|
|
||||||
for l in $supported_wprefs_locales; do
|
|
||||||
if test "$l" = "$lang"; then
|
|
||||||
ok=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test "$ok" = 1; then
|
|
||||||
WPMOFILES="$WPMOFILES $lang.mo"
|
|
||||||
fi
|
|
||||||
ok=0
|
|
||||||
for l in $supported_util_locales; do
|
|
||||||
if test "$l" = "$lang"; then
|
|
||||||
ok=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test "$ok" = 1; then
|
|
||||||
UTILMOFILES="$UTILMOFILES $lang.mo"
|
|
||||||
fi
|
|
||||||
ok=0
|
|
||||||
for l in $supported_wings_locales; do
|
|
||||||
if test "$l" = "$lang"; then
|
|
||||||
ok=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test "$ok" = 1; then
|
|
||||||
WINGSMOFILES="$WINGSMOFILES $lang.mo"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
dnl Added by Oliver - Support for NLSDIR option
|
dnl Added by Oliver - Support for NLSDIR option
|
||||||
dnl ===========================================
|
dnl ===========================================
|
||||||
AC_ARG_WITH(nlsdir, AS_HELP_STRING([--with-nlsdir=PATH], [specify where the locale stuff should go]))
|
AC_ARG_WITH(nlsdir, AS_HELP_STRING([--with-nlsdir=PATH], [specify where the locale stuff should go]))
|
||||||
@@ -525,13 +447,7 @@ AC_ARG_WITH(menu-textdomain, AS_HELP_STRING([--with-menu-textdomain=DOMAIN], [sp
|
|||||||
fi])
|
fi])
|
||||||
AC_SUBST(menutextdomain)
|
AC_SUBST(menutextdomain)
|
||||||
|
|
||||||
AC_SUBST(INTLIBS)
|
|
||||||
AC_SUBST(NLSDIR)
|
AC_SUBST(NLSDIR)
|
||||||
AC_SUBST(MOFILES)
|
|
||||||
AC_SUBST(WPMOFILES)
|
|
||||||
AC_SUBST(UTILMOFILES)
|
|
||||||
AC_SUBST(WINGSMOFILES)
|
|
||||||
AC_SUBST(supported_locales)
|
|
||||||
|
|
||||||
|
|
||||||
dnl ===========================================
|
dnl ===========================================
|
||||||
@@ -995,18 +911,6 @@ AC_OUTPUT
|
|||||||
|
|
||||||
dnl Provide a summary of the config
|
dnl Provide a summary of the config
|
||||||
dnl ===============================
|
dnl ===============================
|
||||||
if test "x$MOFILES" = "x"; then
|
|
||||||
mof=None
|
|
||||||
else
|
|
||||||
mof=`echo $MOFILES`
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$MOFILES" = "x"; then
|
|
||||||
languages=None
|
|
||||||
else
|
|
||||||
languages=`echo $MOFILES | sed 's/.mo//g'`
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Window Maker was configured as follows:"
|
echo "Window Maker was configured as follows:"
|
||||||
echo
|
echo
|
||||||
@@ -1019,11 +923,9 @@ echo "Supported graphic format libraries :$supported_gfx"
|
|||||||
echo "Unsupported features :$unsupported"
|
echo "Unsupported features :$unsupported"
|
||||||
echo "Antialiased text support in WINGs : $xft"
|
echo "Antialiased text support in WINGs : $xft"
|
||||||
echo "Pango text layout support in WINGs : $pango"
|
echo "Pango text layout support in WINGs : $pango"
|
||||||
echo "Translated message files to install : $mof"
|
echo "Translated languages to support :$supported_locales"
|
||||||
dnl echo "Supported languages beside English : $languages"
|
AS_IF([test "x$supported_locales" != "x disabled"],
|
||||||
if test "x$MOFILES" != "x"; then
|
[echo "Installation path for translations : $NLSDIR" | sed -e 's|\$(prefix)|'"$prefix|"])
|
||||||
echo "Installation path for translations : $NLSDIR" | sed -e 's|\$(prefix)|'"$prefix|"
|
|
||||||
fi
|
|
||||||
AS_IF([test "x$debug" = "xyes"],
|
AS_IF([test "x$debug" = "xyes"],
|
||||||
[AS_ECHO(["Debug enabled: CFLAGS = $CFLAGS"]) ])
|
[AS_ECHO(["Debug enabled: CFLAGS = $CFLAGS"]) ])
|
||||||
echo
|
echo
|
||||||
@@ -1031,6 +933,9 @@ echo
|
|||||||
AS_IF([test "x$wm_cv_prog_cc_nestedfunc" != "xyes"],
|
AS_IF([test "x$wm_cv_prog_cc_nestedfunc" != "xyes"],
|
||||||
[AC_MSG_WARN([[Your compiler does not support Nested Function, work-around enabled]])])
|
[AC_MSG_WARN([[Your compiler does not support Nested Function, work-around enabled]])])
|
||||||
|
|
||||||
|
AS_IF([test "x$supported_locales" = "x"],
|
||||||
|
[AC_MSG_WARN([[No language from \$LINGUAS are supported]])])
|
||||||
|
|
||||||
AS_IF([test "x$enable_jpeg" = xno], [dnl
|
AS_IF([test "x$enable_jpeg" = xno], [dnl
|
||||||
AS_ECHO(["WARNING WARNING WARNING WARNING WARNING WARNING WARNING"])
|
AS_ECHO(["WARNING WARNING WARNING WARNING WARNING WARNING WARNING"])
|
||||||
AS_ECHO([])
|
AS_ECHO([])
|
||||||
|
|||||||
94
m4/wm_i18n.m4
Normal file
94
m4/wm_i18n.m4
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
# wm_i18n.m4 - Macros to check and enable translations in WindowMaker
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014-2015 Christophe CURIS
|
||||||
|
# Copyright (c) 2015 The Window Maker Tean
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along
|
||||||
|
# with this program; see the file COPYING.
|
||||||
|
|
||||||
|
|
||||||
|
# WM_I18N_LANGUAGES
|
||||||
|
# -----------------
|
||||||
|
#
|
||||||
|
# Detect which languages the user wants to be installed and check if
|
||||||
|
# the gettext environment is available.
|
||||||
|
#
|
||||||
|
# The list of languages are provided through the environment variable
|
||||||
|
# LINGUAS as a space-separated list of ISO 3166 country codes.
|
||||||
|
# This list is checked against the list of currently available languages
|
||||||
|
# the sources and a warning is issued if a language is not found.
|
||||||
|
#
|
||||||
|
# Support for internationalisation is disabled if the variable is empty
|
||||||
|
# (or undefined)
|
||||||
|
#
|
||||||
|
# The variable 'supported_locales' is created to contain the list of
|
||||||
|
# languages that will have been detected properly and will be installed
|
||||||
|
AC_DEFUN_ONCE([WM_I18N_LANGUAGES],
|
||||||
|
[AC_ARG_VAR([LINGUAS],
|
||||||
|
[list of language translations to support (I18N), use 'list' to get the list of supported languages, default: none])dnl
|
||||||
|
AS_IF([test "x$LINGUAS" != "x"],
|
||||||
|
[wm_save_LIBS="$LIBS"
|
||||||
|
AC_SEARCH_LIBS([gettext], [intl], [],
|
||||||
|
[AC_MSG_ERROR([support for internationalization requested, but library for gettext not found])])
|
||||||
|
AS_IF([test "x$ac_cv_search_gettext" = "xnone required"],
|
||||||
|
[INTLIBS=""],
|
||||||
|
[INTLIBS="$ac_cv_search_gettext"])
|
||||||
|
AC_CHECK_FUNCS([gettext dgettext], [],
|
||||||
|
[AC_MSG_ERROR([support for internationalization requested, but gettext was not found])])
|
||||||
|
LIBS="$wm_save_LIBS"
|
||||||
|
dnl
|
||||||
|
dnl Environment is sane, let's continue
|
||||||
|
AC_DEFINE([I18N], [1], [Internationalization (I18N) support (set by configure)])
|
||||||
|
supported_locales=""
|
||||||
|
|
||||||
|
# This is the list of locales that our archive currently supports
|
||||||
|
wings_locales=" m4_esyscmd([ls WINGs/po/ | sed -n '/po$/{s,.po,,;p}' | tr '\n' ' '])"
|
||||||
|
wmaker_locales=" m4_esyscmd([ls po/ | sed -n '/po$/{s,.po,,;p}' | tr '\n' ' '])"
|
||||||
|
wprefs_locales=" m4_esyscmd([ls WPrefs.app/po/ | sed -n '/po$/{s,.po,,;p}' | tr '\n' ' '])"
|
||||||
|
util_locales=" m4_esyscmd([ls util/po/ | sed -n '/po$/{s,.po,,;p}' | tr '\n' ' '])"
|
||||||
|
|
||||||
|
# Check every language asked by user against these lists to know what to install
|
||||||
|
for lang in $LINGUAS; do
|
||||||
|
found=0
|
||||||
|
wm_missing=""
|
||||||
|
m4_foreach([REGION], [WINGs, wmaker, WPrefs, util],
|
||||||
|
[AS_IF([echo "$[]m4_tolower(REGION)[]_locales" | grep " $lang " > /dev/null],
|
||||||
|
[m4_toupper(REGION)MOFILES="$[]m4_toupper(REGION)MOFILES $lang.mo"
|
||||||
|
found=1],
|
||||||
|
[wm_missing="$wm_missing, REGION"])
|
||||||
|
])
|
||||||
|
# Locale has to be supported by at least one part to be reported in the end
|
||||||
|
# If it is not supported everywhere we just display a message to the user so
|
||||||
|
# that he knows about it
|
||||||
|
wm_missing="`echo "$wm_missing" | sed -e 's/^, //' `"
|
||||||
|
AS_IF([test $found = 1],
|
||||||
|
[supported_locales="$supported_locales $lang"
|
||||||
|
AS_IF([test "x$wm_missing" != "x"],
|
||||||
|
[AC_MSG_WARN([locale $lang is not supported in $wm_missing])]) ],
|
||||||
|
[AC_MSG_WARN([locale $lang is not supported at all, ignoring])])
|
||||||
|
done
|
||||||
|
],
|
||||||
|
[INTLIBS=""
|
||||||
|
WINGSMOFILES=""
|
||||||
|
WMAKERMOFILES=""
|
||||||
|
WPREFSMOFILES=""
|
||||||
|
UTILMOFILES=""
|
||||||
|
supported_locales=" disabled"])
|
||||||
|
dnl
|
||||||
|
dnl The variables that are used in the Makefiles:
|
||||||
|
AC_SUBST([INTLIBS])dnl
|
||||||
|
AC_SUBST([WINGSMOFILES])dnl
|
||||||
|
AC_SUBST([WMAKERMOFILES])dnl
|
||||||
|
AC_SUBST([WPREFSMOFILES])dnl
|
||||||
|
AC_SUBST([UTILMOFILES])dnl
|
||||||
|
])
|
||||||
@@ -2,7 +2,7 @@ DOMAIN = WindowMaker
|
|||||||
|
|
||||||
nlsdir = $(NLSDIR)
|
nlsdir = $(NLSDIR)
|
||||||
|
|
||||||
CATALOGS = @MOFILES@
|
CATALOGS = @WMAKERMOFILES@
|
||||||
|
|
||||||
CLEANFILES = $(CATALOGS) $(DOMAIN).pot
|
CLEANFILES = $(CATALOGS) $(DOMAIN).pot
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user