summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2010-10-20 17:23:11 +0200
committerStephen Gallagher <sgallagh@redhat.com>2010-12-22 13:22:27 -0500
commit6f51c802311fd81a409a26763ed45b28a3234d0d (patch)
treea4c151f83668bae7c44cbb35413e6029190c1ee7
parent2a2f642aae37e3f41cbbda162a74c2b946a4521f (diff)
downloadsssd-6f51c802311fd81a409a26763ed45b28a3234d0d.tar.gz
sssd-6f51c802311fd81a409a26763ed45b28a3234d0d.tar.xz
sssd-6f51c802311fd81a409a26763ed45b28a3234d0d.zip
Make manual pages translatable
Utilizes PO4A to extract translatable strings from Docbook XML sources and allows translators to submit ordinary .PO files. PO4A then generates translated Docbook documents that can be used to generate translated end user documentation. https://fedorahosted.org/sssd/ticket/297
-rw-r--r--Makefile.am47
-rw-r--r--configure.ac4
-rw-r--r--contrib/sssd.spec.in2
-rw-r--r--src/man/Makefile.am160
-rw-r--r--src/man/po/po4a.cfg22
-rw-r--r--src/man/sss_groupdel.8.xml2
6 files changed, 198 insertions, 39 deletions
diff --git a/Makefile.am b/Makefile.am
index d2cf3d07e..174c77586 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
DISTCHECK_CONFIGURE_FLAGS = --with-ldb-lib-dir="$$dc_install_base"/lib/ldb
-SUBDIRS = po
+SUBDIRS = po src/man
# Some old versions of automake don't define builddir
builddir ?= .
@@ -957,41 +957,15 @@ pysss_la_LDFLAGS = \
-module
endif
-############
-# MANPAGES #
-############
-
-#Special Rules:
-export SGML_CATALOG_FILES
-DOCBOOK_XSLT = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
-XMLLINT_FLAGS = --catalogs --postvalid --nonet --xinclude --noout
-XSLTPROC_FLAGS = --catalogs --xinclude --nonet
-
-man_MANS = \
- src/man/sss_useradd.8 src/man/sss_userdel.8 src/man/sss_usermod.8 \
- src/man/sss_groupadd.8 src/man/sss_groupdel.8 src/man/sss_groupmod.8 \
- src/man/sssd.8 src/man/sssd.conf.5 src/man/sssd-ldap.5 \
- src/man/sssd-krb5.5 src/man/sssd-ipa.5 src/man/sssd-simple.5 \
- src/man/sssd_krb5_locator_plugin.8 src/man/sss_groupshow.8 \
- src/man/pam_sss.8 src/man/sss_obfuscate.8
-EXTRA_DIST += $(man_MANS:%=%.xml) $(wildcard $(srcdir)/src/man/include/*.xml)
-
-SUFFIXES = .1.xml .1 .3.xml .3 .5.xml .5 .8.xml .8
-.1.xml.1:
- $(XMLLINT) $(XMLLINT_FLAGS) $<
- $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
-
-.3.xml.3:
- $(XMLLINT) $(XMLLINT_FLAGS) $<
- $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
-
-.5.xml.5:
- $(XMLLINT) $(XMLLINT_FLAGS) $<
- $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
-
-.8.xml.8:
- $(XMLLINT) $(XMLLINT_FLAGS) $<
- $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+################
+# TRANSLATIONS #
+################
+update-po:
+ $(MAKE) -C src/man update-po
+ $(MAKE) -C po update-po
+
+translated-manpages:
+ $(MAKE) -C src/man translate
#######################
# Installation Extras #
@@ -1083,7 +1057,6 @@ if BUILD_PYTHON_BINDINGS
cd $(srcdir)/src/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/src/config clean --all
endif
rm -Rf doc
- rm -f $(man_MANS)
CLEANFILES = *.X */*.X */*/*.X
diff --git a/configure.ac b/configure.ac
index 1ebf2f718..6192c533f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -142,6 +142,8 @@ if test x$HAVE_MANPAGES != x; then
CHECK_STYLESHEET([$SGML_CATALOG_FILES],
[http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
[Docbook XSL templates])
+ AC_CHECK_PROG([PO4A],[po4a],[po4a],[no])
+ AM_CONDITIONAL([HAVE_PO4A], [test "x$PO4A" != "xno"])
fi
if test x$HAVE_PYTHON_BINDINGS != x; then
@@ -184,6 +186,6 @@ AC_DEFINE_UNQUOTED([ABS_BUILD_DIR], ["$abs_build_dir"], [Absolute path to the bu
AC_SUBST([abs_builddir], $abs_build_dir)
AC_CONFIG_FILES([Makefile contrib/sssd.spec src/examples/rwtab src/doxy.config
- src/sysv/systemd/sssd.service po/Makefile.in])
+ src/sysv/systemd/sssd.service po/Makefile.in src/man/Makefile])
AC_OUTPUT
diff --git a/contrib/sssd.spec.in b/contrib/sssd.spec.in
index d1e505b58..0f9ff6478 100644
--- a/contrib/sssd.spec.in
+++ b/contrib/sssd.spec.in
@@ -73,6 +73,7 @@ BuildRequires: bind-utils
BuildRequires: keyutils-libs-devel
BuildRequires: libnl-devel
BuildRequires: nscd
+BuildRequires: po4a
%description
Provides a set of daemons to manage access to remote directories and
@@ -118,6 +119,7 @@ use with ldap_default_authtok_type = obfuscated_password.
--disable-rpath
make %{?_smp_mflags}
+make translated-manpages
%check
export CK_TIMEOUT_MULTIPLIER=10
diff --git a/src/man/Makefile.am b/src/man/Makefile.am
new file mode 100644
index 000000000..695696b77
--- /dev/null
+++ b/src/man/Makefile.am
@@ -0,0 +1,160 @@
+# The following variable is dependent on placement of this file
+top_builddir = ../..
+
+############
+# MANPAGES #
+############
+
+#Special Rules:
+export SGML_CATALOG_FILES
+DOCBOOK_XSLT = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
+XMLLINT_FLAGS = --catalogs --postvalid --nonet --xinclude --noout
+XSLTPROC_FLAGS = --catalogs --xinclude --nonet
+
+man_MANS = \
+ sss_useradd.8 sss_userdel.8 sss_usermod.8 \
+ sss_groupadd.8 sss_groupdel.8 sss_groupmod.8 \
+ sssd.8 sssd.conf.5 sssd-ldap.5 \
+ sssd-krb5.5 sssd-ipa.5 sssd-simple.5 \
+ sssd_krb5_locator_plugin.8 sss_groupshow.8 \
+ pam_sss.8 sss_obfuscate.8
+EXTRA_DIST = $(man_MANS:%=%.xml) $(wildcard $(srcdir)/include/*.xml)
+
+SUFFIXES = .1.xml .1 .3.xml .3 .5.xml .5 .8.xml .8
+.1.xml.1:
+ $(XMLLINT) $(XMLLINT_FLAGS) $<
+ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+
+.3.xml.3:
+ $(XMLLINT) $(XMLLINT_FLAGS) $<
+ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+
+.5.xml.5:
+ $(XMLLINT) $(XMLLINT_FLAGS) $<
+ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+
+.8.xml.8:
+ $(XMLLINT) $(XMLLINT_FLAGS) $<
+ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+
+########################
+# MANPAGE TRANSLATIONS #
+########################
+
+PO4A=@PO4A@
+SED=@SED@
+
+PACKAGE_DOC=sssd-docs
+
+POTFILE = po/$(PACKAGE_DOC).pot
+PO4A_CONFIG = po/po4a.cfg
+
+# Extract the list of languages from the po4a config file.
+LINGUAS_DIST = `$(SED) -ne 's/^.*\[po4a_langs\] \(.*\)$$/\1/p' $(srcdir)/$(PO4A_CONFIG)`
+
+# If the user has not defined it let's use the default.
+LINGUAS ?= $(LINGUAS_DIST)
+
+PO4A_COMMON_OPTS = --option doctype=docbook \
+ --package-name $(PACKAGE_DOC) \
+ --variable builddir=$(CURDIR) \
+ --package-version $(PACKAGE_VERSION) \
+ --msgid-bugs-address sssd-devel@redhat.com \
+ --copyright-holder "Red Hat"
+
+PO4A_BUILD_OPTS = $(PO4A_COMMON_OPTS) --no-backups
+
+EXTRA_DIST += \
+ $(POTFILE)\
+ $(PO4A_CONFIG)
+
+XML_DOC = $(wildcard $(srcdir)/*.xml) $(wildcard $(srcdir)/include/*.xml)
+
+if HAVE_PO4A
+
+# FIXME: Use a stamp file until po4a supports them internally.
+man.stamp: $(XML_DOC)
+ cd $(srcdir) && \
+ $(PO4A) $(PO4A_BUILD_OPTS) $(PO4A_CONFIG)
+ touch $@
+
+update-po:
+ cd $(srcdir) && \
+ $(PO4A) $(PO4A_BUILD_OPTS) --force $(PO4A_CONFIG)
+
+# Generate translated manual pages
+translate: man.stamp
+ if [ -z $$recursion ]; then \
+ for lang in $(LINGUAS); do \
+ if [ -d $$lang ]; then \
+ sources=$$(ls $$lang/*.xml); \
+ manpages=$$(echo $$sources | $(SED) 's/\.xml//'); \
+ $(MAKE) recursion=1 man_MANS="$$manpages"; \
+ fi \
+ done \
+ fi
+
+
+dist-hook: man.stamp
+ if [ -f man.stamp ]; then \
+ cp man.stamp $(distdir); \
+ for lang in $(LINGUAS_DIST); do \
+ cp $(srcdir)/po/$$lang.po $(distdir)/po; \
+ $(mkdir_p) $(distdir)/$$lang; \
+ cp -r $(builddir)/$$lang $(distdir)/; \
+ done; \
+ else \
+ cp $(srcdir)/man.stamp $(distdir); \
+ for lang in $(LINGUAS_DIST); do \
+ cp $(srcdir)/po/$$lang.po $(distdir)/po; \
+ $(mkdir_p) $(distdir)/$$lang; \
+ cp -r $(srcdir)/$$lang $(distdir)/; \
+ done; \
+ fi
+
+
+clean-local: clean-local-@USE_NLS@
+distclean-local: clean-local-@USE_NLS@
+mostlyclean-local: clean-local-@USE_NLS@
+maintainer-clean-local: clean-local-@USE_NLS@
+
+clean-local-no:
+clean-local-yes:
+ for lang in $(LINGUAS); do \
+ if [ -d $$lang ]; then \
+ rm -rf $$lang; \
+ fi \
+ done
+ rm -f $(man_MANS)
+ rm -f man.stamp
+
+install-data-local: install-data-local-@USE_NLS@
+install-data-local-no:
+install-data-local-yes:
+ for lang in $(LINGUAS); do \
+ if [ -d $$lang ]; then \
+ sources=$$(ls $$lang/*.xml); \
+ manpages=$$(echo $$sources | $(SED) 's/\.xml//'); \
+ $(MAKE) install-man \
+ mandir="$(mandir)/$$lang" \
+ man_MANS="$$manpages"; \
+ fi \
+ done
+
+uninstall-local: uninstall-local-@USE_NLS@
+uninstall-local-no:
+uninstall-local-yes:
+ for lang in $(LINGUAS); do \
+ if [ -d $$lang ]; then \
+ sources=$$(ls $$lang/*.xml); \
+ manpages=$$(echo $$sources | $(SED) 's/\.xml//'); \
+ $(MAKE) uninstall-man \
+ mandir="$(mandir)/$$lang" \
+ man_MANS="$$manpages"; \
+ fi \
+ done
+
+else
+translate:
+ @echo No po4a, skipping translations
+endif
diff --git a/src/man/po/po4a.cfg b/src/man/po/po4a.cfg
new file mode 100644
index 000000000..4628642f4
--- /dev/null
+++ b/src/man/po/po4a.cfg
@@ -0,0 +1,22 @@
+[po4a_langs] cs
+[po4a_paths] po/sssd-docs.pot $lang:po/$lang.po
+[type:docbook] sss_groupmod.8.xml $lang:$(builddir)/$lang/sss_groupmod.8.xml
+[type:docbook] sssd.conf.5.xml $lang:$(builddir)/$lang/sssd.conf.5.xml
+[type:docbook] sssd-ldap.5.xml $lang:$(builddir)/$lang/sssd-ldap.5.xml
+[type:docbook] pam_sss.8.xml $lang:$(builddir)/$lang/pam_sss.8.xml
+[type:docbook] sssd_krb5_locator_plugin.8.xml $lang:$(builddir)/$lang/sssd_krb5_locator_plugin.8.xml
+[type:docbook] sssd-simple.5.xml $lang:$(builddir)/$lang/sssd-simple.5.xml
+[type:docbook] sssd-ipa.5.xml $lang:$(builddir)/$lang/sssd-ipa.5.xml
+[type:docbook] sssd.8.xml $lang:$(builddir)/$lang/sssd.8.xml
+[type:docbook] sss_obfuscate.8.xml $lang:$(builddir)/$lang/sss_obfuscate.8.xml
+[type:docbook] sss_useradd.8.xml $lang:$(builddir)/$lang/sss_useradd.8.xml
+[type:docbook] sssd-krb5.5.xml $lang:$(builddir)/$lang/sssd-krb5.5.xml
+[type:docbook] sss_groupadd.8.xml $lang:$(builddir)/$lang/sss_groupadd.8.xml
+[type:docbook] sss_userdel.8.xml $lang:$(builddir)/$lang/sss_userdel.8.xml
+[type:docbook] sss_groupdel.8.xml $lang:$(builddir)/$lang/sss_groupdel.8.xml
+[type:docbook] sss_groupshow.8.xml $lang:$(builddir)/$lang/sss_groupshow.8.xml
+[type:docbook] sss_usermod.8.xml $lang:$(builddir)/$lang/sss_usermod.8.xml
+[type:docbook] include/service_discovery.xml $lang:$(builddir)/$lang/include/service_discovery.xml opt:"-k 0"
+[type:docbook] include/upstream.xml $lang:$(builddir)/$lang/include/upstream.xml opt:"-k 0"
+[type:docbook] include/failover.xml $lang:$(builddir)/$lang/include/failover.xml opt:"-k 0"
+[type:docbook] include/param_help.xml $lang:$(builddir)/$lang/include/param_help.xml opt:"-k 0"
diff --git a/src/man/sss_groupdel.8.xml b/src/man/sss_groupdel.8.xml
index 22f4fca02..978fc7368 100644
--- a/src/man/sss_groupdel.8.xml
+++ b/src/man/sss_groupdel.8.xml
@@ -13,7 +13,7 @@
<refnamediv id='name'>
<refname>sss_groupdel</refname>
- <refpurpose>create a new group</refpurpose>
+ <refpurpose>delete a group</refpurpose>
</refnamediv>
<refsynopsisdiv id='synopsis'>