From 20399a603d0458da8e49de96742664394cfd9fd2 Mon Sep 17 00:00:00 2001 From: Ruxandra Simion Date: Sat, 24 Feb 2018 18:46:17 +0200 Subject: [PATCH] Migrate to Gettext https://bugzilla.gnome.org/show_bug.cgi?id=793042 --- autogen.sh | 1 - configure.ac | 3 +- data/Makefile.am | 6 +- data/five-or-more.appdata.xml.in | 14 ++-- data/five-or-more.desktop.in | 8 +- git.mk | 135 ++++++++++++++++++++++++++----- po/Makevars | 78 ++++++++++++++++++ po/POTFILES.in | 7 +- 8 files changed, 215 insertions(+), 37 deletions(-) create mode 100644 po/Makevars diff --git a/autogen.sh b/autogen.sh index 941dd06..ace9e51 100755 --- a/autogen.sh +++ b/autogen.sh @@ -32,7 +32,6 @@ if [ "$#" = 0 -a "x$NOCONFIGURE" = "x" ]; then fi aclocal --install || exit 1 -intltoolize --force --copy --automake || exit 1 autoreconf --verbose --force --install -Wno-portability || exit 1 cd $olddir diff --git a/configure.ac b/configure.ac index 46b93ed..37ce8d7 100644 --- a/configure.ac +++ b/configure.ac @@ -36,7 +36,8 @@ dnl ########################################################################### dnl Internationalization dnl ########################################################################### -IT_PROG_INTLTOOL([0.50]) +AM_GNU_GETTEXT_VERSION([0.19.8]) +AM_GNU_GETTEXT([external]) AC_SUBST(GETTEXT_PACKAGE, five-or-more) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [The gettext package name]) diff --git a/data/Makefile.am b/data/Makefile.am index 5aaed20..a0b866f 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -21,12 +21,14 @@ man_MANS = five-or-more.6 desktop_in_files = five-or-more.desktop.in desktopdir = $(datadir)/applications desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) -@INTLTOOL_DESKTOP_RULE@ +$(desktop_DATA): $(desktop_in_files) + $(AM_V_GEN)$(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ appstream_in_files = five-or-more.appdata.xml.in appstream_XML = $(appstream_in_files:.xml.in=.xml) @APPSTREAM_XML_RULES@ -@INTLTOOL_XML_RULE@ +$(appstream_XML): $(appstream_in_files) + $(AM_V_GEN)$(MSGFMT) --xml --template $< -d $(top_srcdir)/po -o $@ EXTRA_DIST = \ $(appstream_in_files) \ diff --git a/data/five-or-more.appdata.xml.in b/data/five-or-more.appdata.xml.in index 3e2f0d9..74a315b 100644 --- a/data/five-or-more.appdata.xml.in +++ b/data/five-or-more.appdata.xml.in @@ -4,19 +4,19 @@ five-or-more.desktop CC0-1.0 GPL-3.0+ - <_name>Five or More - <_summary>Remove colored balls from the board by forming lines + Five or More + Remove colored balls from the board by forming lines - <_p> +

Five or More is the GNOME port of a once-popular computer game. Align five or more objects of the same color into a line to cause them to disappear and score points. Earn many more points by lining up as many objects as possible before clearing them. - - <_p> +

+

More objects appear after every turn. Play for as long as possible, until the board is completely full! - +

@@ -37,7 +37,7 @@ UserDocs five-or-more - <_developer_name>The GNOME Project + The GNOME Project none diff --git a/data/five-or-more.desktop.in b/data/five-or-more.desktop.in index bb53905..f3fcc44 100644 --- a/data/five-or-more.desktop.in +++ b/data/five-or-more.desktop.in @@ -1,8 +1,10 @@ [Desktop Entry] -_Name=Five or More -_Comment=Remove colored balls from the board by forming lines -_Keywords=game;strategy;logic; +Name=Five or More +Comment=Remove colored balls from the board by forming lines +# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=game;strategy;logic; Exec=five-or-more +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! Icon=five-or-more Terminal=false Type=Application diff --git a/git.mk b/git.mk index 5467b86..90de80f 100644 --- a/git.mk +++ b/git.mk @@ -1,4 +1,5 @@ -# git.mk +# git.mk, a small Makefile to autogenerate .gitignore files +# for autotools-based projects. # # Copyright 2009, Red Hat, Inc. # Copyright 2010,2011,2012,2013 Behdad Esfahbod @@ -9,7 +10,8 @@ # notice and this notice are preserved. # # The latest version of this file can be downloaded from: -# https://raw.github.com/behdad/git.mk/master/git.mk +GIT_MK_URL = https://raw.githubusercontent.com/behdad/git.mk/master/git.mk +# # Bugs, etc, should be reported upstream at: # https://github.com/behdad/git.mk # @@ -45,7 +47,8 @@ # build dir. # # This file knows how to handle autoconf, automake, libtool, gtk-doc, -# gnome-doc-utils, yelp.m4, mallard, intltool, gsettings, dejagnu. +# gnome-doc-utils, yelp.m4, mallard, intltool, gsettings, dejagnu, appdata, +# appstream, hotdoc. # # This makefile provides the following targets: # @@ -77,39 +80,88 @@ GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL = \ $(srcdir)/aclocal.m4 \ $(srcdir)/autoscan.log \ $(srcdir)/configure.scan \ - `AUX_DIR=$(srcdir)/$$($(AUTOCONF) --trace 'AC_CONFIG_AUX_DIR:$$1' $(srcdir)/configure.ac); \ + `AUX_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_AUX_DIR:$$1' ./configure.ac); \ test "x$$AUX_DIR" = "x$(srcdir)/" && AUX_DIR=$(srcdir); \ for x in \ ar-lib \ compile \ config.guess \ + config.rpath \ config.sub \ depcomp \ install-sh \ ltmain.sh \ missing \ mkinstalldirs \ + test-driver \ + ylwrap \ ; do echo "$$AUX_DIR/$$x"; done` \ - `$(AUTOCONF) --trace 'AC_CONFIG_HEADERS:$$1' $(srcdir)/configure.ac | \ + `cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_HEADERS:$$1' ./configure.ac | \ head -n 1 | while read f; do echo "$(srcdir)/$$f.in"; done` # # All modules should also be fine including the following variable, which # removes automake-generated Makefile.in files: GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN = \ - `$(AUTOCONF) --trace 'AC_CONFIG_FILES:$$1' $(srcdir)/configure.ac | \ + `cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_FILES:$$1' ./configure.ac | \ while read f; do \ case $$f in Makefile|*/Makefile) \ test -f "$(srcdir)/$$f.am" && echo "$(srcdir)/$$f.in";; esac; \ done` # -# Modules that use libtool /and/ use AC_CONFIG_MACRO_DIR([m4]) may also -# include this: +# Modules that use libtool and use AC_CONFIG_MACRO_DIR() may also include this, +# though it's harmless to include regardless. GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL = \ - $(srcdir)/m4/libtool.m4 \ - $(srcdir)/m4/ltoptions.m4 \ - $(srcdir)/m4/ltsugar.m4 \ - $(srcdir)/m4/ltversion.m4 \ - $(srcdir)/m4/lt~obsolete.m4 + `MACRO_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_MACRO_DIR:$$1' ./configure.ac); \ + if test "x$$MACRO_DIR" != "x$(srcdir)/"; then \ + for x in \ + libtool.m4 \ + ltoptions.m4 \ + ltsugar.m4 \ + ltversion.m4 \ + lt~obsolete.m4 \ + ; do echo "$$MACRO_DIR/$$x"; done; \ + fi` +# +# Modules that use gettext and use AC_CONFIG_MACRO_DIR() may also include this, +# though it's harmless to include regardless. +GITIGNORE_MAINTAINERCLEANFILES_M4_GETTEXT = \ + `MACRO_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_MACRO_DIR:$$1' ./configure.ac); \ + if test "x$$MACRO_DIR" != "x$(srcdir)/"; then \ + for x in \ + codeset.m4 \ + extern-inline.m4 \ + fcntl-o.m4 \ + gettext.m4 \ + glibc2.m4 \ + glibc21.m4 \ + iconv.m4 \ + intdiv0.m4 \ + intl.m4 \ + intldir.m4 \ + intlmacosx.m4 \ + intmax.m4 \ + inttypes-pri.m4 \ + inttypes_h.m4 \ + lcmessage.m4 \ + lib-ld.m4 \ + lib-link.m4 \ + lib-prefix.m4 \ + lock.m4 \ + longlong.m4 \ + nls.m4 \ + po.m4 \ + printf-posix.m4 \ + progtest.m4 \ + size_max.m4 \ + stdint_h.m4 \ + threadlib.m4 \ + uintmax_t.m4 \ + visibility.m4 \ + wchar_t.m4 \ + wint_t.m4 \ + xsize.m4 \ + ; do echo "$$MACRO_DIR/$$x"; done; \ + fi` @@ -141,7 +193,10 @@ git-mk-install: fi; \ fi; done; test -z "$$any_failed" -.PHONY: git-all git-mk-install +git-mk-update: + wget $(GIT_MK_URL) -O $(top_srcdir)/git.mk + +.PHONY: git-all git-mk-install git-mk-update @@ -149,7 +204,7 @@ git-mk-install: # Actual .gitignore generation: ############################################################################### -$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk +$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk $(top_srcdir)/configure.ac @echo "git.mk: Generating $@" @{ \ if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \ @@ -158,8 +213,24 @@ $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk $(DOC_MODULE)-decl.txt \ tmpl/$(DOC_MODULE)-unused.sgml \ "tmpl/*.bak" \ + $(REPORT_FILES) \ + $(DOC_MODULE).pdf \ xml html \ ; do echo "/$$x"; done; \ + FLAVOR=$$(cd $(top_srcdir); $(AUTOCONF) --trace 'GTK_DOC_CHECK:$$2' ./configure.ac); \ + case $$FLAVOR in *no-tmpl*) echo /tmpl;; esac; \ + if echo "$(SCAN_OPTIONS)" | grep -q "\-\-rebuild-types"; then \ + echo "/$(DOC_MODULE).types"; \ + fi; \ + if echo "$(SCAN_OPTIONS)" | grep -q "\-\-rebuild-sections"; then \ + echo "/$(DOC_MODULE)-sections.txt"; \ + fi; \ + if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + for x in \ + $(SETUP_FILES) \ + $(DOC_MODULE).types \ + ; do echo "/$$x"; done; \ + fi; \ fi; \ if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \ for lc in $(DOC_LINGUAS); do \ @@ -179,6 +250,15 @@ $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk "*/*.omf.out" \ ; do echo /$$x; done; \ fi; \ + if test "x$(HOTDOC)" = x; then :; else \ + $(foreach project, $(HOTDOC_PROJECTS),echo "/$(call HOTDOC_TARGET,$(project))"; \ + echo "/$(shell $(call HOTDOC_PROJECT_COMMAND,$(project)) --get-conf-path output)" ; \ + echo "/$(shell $(call HOTDOC_PROJECT_COMMAND,$(project)) --get-private-folder)" ; \ + ) \ + for x in \ + .hotdoc.d \ + ; do echo "/$$x"; done; \ + fi; \ if test "x$(HELP_ID)" = x -o "x$(HELP_LINGUAS)" = x; then :; else \ for lc in $(HELP_LINGUAS); do \ for x in \ @@ -194,8 +274,19 @@ $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk $(gsettings__enum_file) \ ; do echo "/$$x"; done; \ fi; \ + if test "x$(appdata_XML)" = x; then :; else \ + for x in \ + $(appdata_XML:.xml=.valid) \ + ; do echo "/$$x"; done; \ + fi; \ + if test "x$(appstream_XML)" = x; then :; else \ + for x in \ + $(appstream_XML:.xml=.valid) \ + ; do echo "/$$x"; done; \ + fi; \ if test -f $(srcdir)/po/Makefile.in.in; then \ for x in \ + ABOUT-NLS \ po/Makefile.in.in \ po/Makefile.in.in~ \ po/Makefile.in \ @@ -204,6 +295,7 @@ $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk po/POTFILES \ po/Rules-quot \ po/stamp-it \ + po/stamp-po \ po/.intltool-merge-cache \ "po/*.gmo" \ "po/*.header" \ @@ -235,7 +327,7 @@ $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk if test "x$(am__dirstamp)" = x; then :; else \ echo "$(am__dirstamp)"; \ fi; \ - if test "x$(LTCOMPILE)" = x; then :; else \ + if test "x$(findstring libtool,$(LTCOMPILE))" = x -a "x$(findstring libtool,$(LTCXXCOMPILE))" = x -a "x$(GTKDOC_RUN)" = x; then :; else \ for x in \ "*.lo" \ ".libs" "_libs" \ @@ -253,7 +345,9 @@ $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk $(TEST_LOGS) \ $(TEST_LOGS:.log=.trs) \ $(TEST_SUITE_LOG) \ - "*.$(OBJEXT)" \ + $(TESTS:=.test) \ + "*.gcda" \ + "*.gcno" \ $(DISTCLEANFILES) \ $(am__CONFIG_DISTCLEAN_FILES) \ $(CONFIG_CLEAN_FILES) \ @@ -261,11 +355,10 @@ $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk "*.tab.c" \ $(MAINTAINERCLEANFILES) \ $(BUILT_SOURCES) \ - $(DEPDIR) \ $(patsubst %.vala,%.c,$(filter %.vala,$(SOURCES))) \ $(filter %_vala.stamp,$(DIST_COMMON)) \ $(filter %.vapi,$(DIST_COMMON)) \ - $(patsubst %.vapi,%.h,$(filter %.vapi,$(DIST_COMMON))) \ + $(filter $(addprefix %,$(notdir $(patsubst %.vapi,%.h,$(filter %.vapi,$(DIST_COMMON))))),$(DIST_COMMON)) \ Makefile \ Makefile.in \ "*.orig" \ @@ -275,6 +368,10 @@ $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk ".*.sw[nop]" \ ".dirstamp" \ ; do echo "/$$x"; done; \ + for x in \ + "*.$(OBJEXT)" \ + $(DEPDIR) \ + ; do echo "$$x"; done; \ } | \ sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \ sed 's@/[.]/@/@g' | \ diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..0dc7b90 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,78 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = five-or-more contributors + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = no + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = https://bugzilla.gnome.org/enter_bug.cgi?product=five-or-more&keywords=I18N+L10N&component=general + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = yes + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = no + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = no diff --git a/po/POTFILES.in b/po/POTFILES.in index 9e40b03..f354a02 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,11 +1,10 @@ # List of source files containing translatable strings. # Please keep this file in alphabetical order. -[encoding: UTF-8] data/five-or-more.appdata.xml.in data/five-or-more.desktop.in -[type: gettext/glade]data/five-or-more-preferences.ui -[type: gettext/glade]data/five-or-more.ui -[type: gettext/glade]data/menu.ui +data/five-or-more-preferences.ui +data/five-or-more.ui +data/menu.ui data/org.gnome.five-or-more.gschema.xml data/translatable_themes.h src/five-or-more.c -- GitLab