Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
po: provide custom make rules for po file management
Historically we have relied on autopoint/gettextize to install a standard po/Makefile.in.in. There is very limited scope for customizing this and it also causes a bunch of extra stuff to be pulled into configure.ac which potentially clashes with gnulib. Writing make rules for po file management is no more difficult than any other rules libvirt has, so stop using autopoint/gettextize. Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
- Loading branch information
Showing
14 changed files
with
229 additions
and
83 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
po/README.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
dnl gettext utilities | ||
dnl | ||
dnl Copyright (C) 2018 Red Hat, Inc. | ||
dnl | ||
dnl This library is free software; you can redistribute it and/or | ||
dnl modify it under the terms of the GNU Lesser General Public | ||
dnl License as published by the Free Software Foundation; either | ||
dnl version 2.1 of the License, or (at your option) any later version. | ||
dnl | ||
dnl This library is distributed in the hope that it will be useful, | ||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
dnl Lesser General Public License for more details. | ||
dnl | ||
dnl You should have received a copy of the GNU Lesser General Public | ||
dnl License along with this library. If not, see | ||
dnl <http://www.gnu.org/licenses/>. | ||
dnl | ||
|
||
AC_DEFUN([LIBVIRT_ARG_NLS],[ | ||
LIBVIRT_ARG_ENABLE([NLS], [NLS], [check]) | ||
]) | ||
|
||
AC_DEFUN([LIBVIRT_CHECK_NLS],[ | ||
if test "x$enable_nls" != "xno" | ||
then | ||
AC_CHECK_FUNC([gettext], [], [ | ||
AC_CHECK_LIB([intl], [gettext], [], [ | ||
if test "x$enable_nls" == "xcheck" | ||
then | ||
enable_nls=no | ||
else | ||
AC_MSG_ERROR([gettext() is required to build libvirt]") | ||
fi | ||
]) | ||
]) | ||
fi | ||
if test "x$enable_nls" != "xno" | ||
then | ||
AC_CHECK_HEADERS([libintl.h], [enable_nls=yes],[ | ||
if test "x$enable_nls" == "xcheck" | ||
then | ||
enable_nls=no | ||
else | ||
AC_MSG_ERROR([libintl.h is required to build libvirt]") | ||
fi | ||
]) | ||
fi | ||
dnl GNU gettext tools (optional). | ||
AC_CHECK_PROG([XGETTEXT], [xgettext], [xgettext], [no]) | ||
AC_CHECK_PROG([MSGFMT], [msgfmt], [msgfmt], [no]) | ||
AC_CHECK_PROG([MSGMERGE], [msgmerge], [msgmerge], [no]) | ||
dnl Check they are the GNU gettext tools. | ||
AC_MSG_CHECKING([msgfmt is GNU tool]) | ||
if $MSGFMT --version >/dev/null 2>&1 && $MSGFMT --version | grep -q 'GNU gettext'; then | ||
msgfmt_is_gnu=yes | ||
else | ||
msgfmt_is_gnu=no | ||
fi | ||
AC_MSG_RESULT([$msgfmt_is_gnu]) | ||
AM_CONDITIONAL([HAVE_GNU_GETTEXT_TOOLS], | ||
[test "x$XGETTEXT" != "xno" && test "x$MSGFMT" != "xno" && \ | ||
test "x$MSGMERGE" != "xno" && test "x$msgfmt_is_gnu" != "xno"]) | ||
]) | ||
|
||
AC_DEFUN([LIBVIRT_RESULT_NLS],[ | ||
LIBVIRT_RESULT([NLS], [$enable_nls]) | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
DOMAIN = $(PACKAGE_NAME) | ||
COPYRIGHT_HOLDER = The Libvirt authors | ||
MSGID_BUGS_ADDRESS = https://libvirt.org/bugs.html | ||
|
||
LANGS := \ | ||
af am anp ar as ast bal be bg bn_IN \ | ||
bn bo br brx bs ca cs cy da de_CH \ | ||
de el en_GB eo es et eu fa fi \ | ||
fr gl gu he hi hr hu ia \ | ||
id ilo is it ja ka kk km kn ko \ | ||
kw_GB kw@kkcor kw kw@uccor ky lt lv mai mk ml \ | ||
mn mr ms nb nds ne nl nn nso \ | ||
or pa pl pt_BR pt ro ru si sk sl \ | ||
sq sr@latin sr sv ta te tg th tr tw \ | ||
uk ur vi wba yo zh_CN zh_HK zh_TW zu | ||
|
||
|
||
POTFILE_DEPS := $(shell $(SED) 's,^,$(top_srcdir)/,' $(srcdir)/POTFILES) | ||
POTFILE := $(DOMAIN).pot | ||
POFILES := $(LANGS:%=%.po) | ||
GMOFILES := $(LANGS:%=%.gmo) | ||
|
||
EXTRA_DIST = \ | ||
POTFILES \ | ||
$(POTFILE) \ | ||
$(POFILES) \ | ||
$(GMOFILES) | ||
|
||
if HAVE_GNU_GETTEXT_TOOLS | ||
|
||
XGETTEXT_ARGS = \ | ||
--default-domain=$(DOMAIN) \ | ||
--from-code=utf-8 \ | ||
--add-comments=TRANSLATORS: \ | ||
--keyword=_ --keyword=N_ \ | ||
--copyright-holder='$(COPYRIGHT_HOLDER)' \ | ||
--package-name="$(PACKAGE_NAME)" \ | ||
--package-version="$(PACKAGE_VERSION)" \ | ||
--msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \ | ||
--directory=$(top_srcdir) \ | ||
$(NULL) | ||
|
||
SED_PO_FIXUP_ARGS = \ | ||
-e "s|text/plain; charset=CHARSET|text/plain; charset=UTF-8|g" \ | ||
-e "s|SOME DESCRIPTIVE TITLE|Libvirt package strings|g" \ | ||
-e "s|Copyright (C) YEAR|Copyright (C) $$(date +'%Y')|" \ | ||
$(NULL) | ||
|
||
|
||
# Although they're in EXTRA_DIST, we still need to | ||
# copy these again, because update-gmo will change | ||
# their content, and dist-hook runs after the | ||
# things in EXTRA_DIST are copied. | ||
dist-hook: $(GMOFILES) | ||
cp -f $(POTFILE:%=$(srcdir)/%) $(distdir)/ | ||
cp -f $(POFILES:%=$(srcdir)/%) $(distdir)/ | ||
cp -f $(GMOFILES:%=$(srcdir)/%) $(distdir)/ | ||
|
||
update-po: $(POFILES) | ||
|
||
update-gmo: $(GMOFILES) | ||
|
||
$(POTFILE): POTFILES $(POTFILE_DEPS) | ||
$(XGETTEXT) -o $(srcdir)/$@-t $(XGETTEXT_ARGS) \ | ||
--files-from=$(abs_srcdir)/POTFILES | ||
$(SED) $(SED_PO_FIXUP_ARGS) < $@-t > $@ | ||
rm -f $@-t | ||
|
||
%.po: $(POTFILE) | ||
cd $(srcdir) && \ | ||
$(MSGMERGE) --backup=off --no-fuzzy-matching --update $@ $(POTFILE) | ||
|
||
%.gmo: %.po | ||
rm -f $(srcdir)/$@ $@-t | ||
$(MSGFMT) -c -o $@-t $(srcdir)/$< | ||
mv $@-t $(srcdir)/$@ | ||
|
||
.PRECIOUS: $(POTFILE) $(POFILES) | ||
|
||
endif HAVE_GNU_GETTEXT_TOOLS | ||
|
||
# Cannot use 'localedir' since this conflicts with autoconf. | ||
langinstdir = $(datadir)/locale | ||
|
||
install-data-hook: $(GMOFILES) | ||
mkdir -p $(DESTDIR)$(langinstdir) | ||
for lang in $(LANGS); do \ | ||
d=$(DESTDIR)$(langinstdir)/$$lang/LC_MESSAGES; \ | ||
mkdir -p $$d; \ | ||
install -m 0644 $(srcdir)/$$lang.gmo $$d/$(DOMAIN).mo; \ | ||
done | ||
|
||
uninstall-hook: | ||
for lang in $(LANGS); do \ | ||
d=$(DESTDIR)$(langinstdir)/$$lang/LC_MESSAGES; \ | ||
rm -f $$d/$(DOMAIN).mo; \ | ||
done |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
Libvirt Message Translation | ||
=========================== | ||
|
||
Libvirt translatable messages are maintained using the GNU Gettext tools and | ||
file formats, in combination with the Zanata web service. | ||
|
||
Source repository | ||
================= | ||
|
||
The libvirt GIT repository stores the master "libvirt.pot" file and full "po" | ||
files for translations. The master "libvirt.pot" file can be re-generated using | ||
|
||
make libvirt.pot | ||
|
||
The full po files can have their source locations and msgids updated using | ||
|
||
make update-po | ||
|
||
Normally these updates are only done when either refreshing translations from | ||
Zanata, or when creating a new release. | ||
|
||
Zanata web service | ||
================== | ||
|
||
The translation of libvirt messages has been outsourced to the Fedora | ||
translation team using the Zanata web service: | ||
|
||
https://fedora.zanata.org/project/view/libvirt | ||
|
||
As such, changes to translations will generally NOT be accepted as patches | ||
directly to libvirt GIT. Any changes made to "$LANG.mini.po" files in libvirt | ||
GIT will be overwritten and lost the next time content is imported from Zanata. | ||
|
||
The master "libvirt.pot" file is periodically pushed to Zanata to provide the | ||
translation team with content changes. New translated text is then periodically | ||
pulled down from Zanata to update the po files. |
Oops, something went wrong.