-dnl Copyright © 2011, 2021 Nick Bowler
+dnl Copyright © 2011, 2021-2023 Nick Bowler
dnl
dnl Computes the set of .po and .mo files based on the LINGUAS environment
dnl variable. The variable POFILES is set to the complete list of .po files,
AC_DEFUN([DX_LINGUAS],
[AC_REQUIRE([AM_GNU_GETTEXT])dnl
+AC_REQUIRE([DX_PROG_JOIN])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
POFILES=
MOFILES=
if test -f "$srcdir/po/LINGUAS"; then
- awk '{ sub(/#.*$/, "")
+ $AWK '{ sub(/#.*$/, "")
for (i = 1; i <= NF; i++) {
print $(i)
}
- }' "$srcdir/po/LINGUAS" | sort -u >conftest.all
+ }' "$srcdir/po/LINGUAS" | LC_ALL=C sort -u >conftest.all
: "${LINGUAS=all}"
if test x"$LINGUAS" = x"all"; then
# Ensure that if "la_CC"-style code is requested then so is plain "la".
printf '%s\n' "$arg"
case $arg in
- *_*) printf '%s\n' "${arg%%_*}" ;;
+ *_*)
+ save_IFS=$IFS; IFS=_
+ set x $arg
+ IFS=$save_IFS
+ AS_ECHO(["${2}"])
+ ;;
esac
done
- } | sort -u >conftest.ena
+ } | LC_ALL=C sort -u >conftest.ena
fi
- ALL_LINGUAS=`cat conftest.all`
- LINGUAS=`join conftest.ena conftest.all`
-
- # Note: $srcdir is not used here because these variables are for make.
- set x $ALL_LINGUAS; shift
- case ${#} in
- 0) ;;
- *) POFILES=`printf "po/%s.po\n" "${@}"` ;;
- esac
+ exec 3<conftest.all
+ while read x <&3; do
+ AS_VAR_APPEND([POFILES], ["${POFILES:+ }po/$x.po"])
+ done
if test x"$USE_NLS" = x"yes"; then
- set x $LINGUAS; shift
- case ${#} in
- 0) ;;
- *) MOFILES=`printf "po/%s.mo\n" "${@}"` ;;
- esac
+ LC_ALL=C $JOIN conftest.ena conftest.all >conftest.out
+ exec 3<conftest.out
+ while read x <&3; do
+ AS_VAR_APPEND([MOFILES], ["${MOFILES:+ }po/$x.mo"])
+ done
fi
- rm -f conftest.all conftest.ena
+ exec 3<&-
+ rm -f conftest.all conftest.ena conftest.out
fi
AC_SUBST([POFILES])