Patches that make translations in the build process and runtime of the Initial Setup work properly.
Vratislav Podzimek (2): Make handling translations easier Make translations work
.tx/config | 8 +-- MANIFEST.in | 3 +- Makefile | 20 +++++++- initial-setup.spec | 4 +- initial_setup/gui/gui.py | 5 +- initial_setup/tui/hubs/initial_setup_hub.py | 5 +- initial_setup/tui/tui.py | 5 +- locale/cs_CZ/LC_MESSAGES/initial-setup.po | 27 ---------- locale/initial-setup.pot | 26 ---------- po/Makefile | 77 +++++++++++++++++++++++++++++ po/initial-setup.pot | 41 +++++++++++++++ setup.py | 11 ----- 12 files changed, 153 insertions(+), 79 deletions(-) delete mode 100644 locale/cs_CZ/LC_MESSAGES/initial-setup.po delete mode 100644 locale/initial-setup.pot create mode 100644 po/Makefile create mode 100644 po/initial-setup.pot
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com --- .tx/config | 8 ++-- MANIFEST.in | 3 +- Makefile | 20 +++++++- initial-setup.spec | 4 +- locale/cs_CZ/LC_MESSAGES/initial-setup.po | 27 ----------- locale/initial-setup.pot | 26 ----------- po/Makefile | 77 +++++++++++++++++++++++++++++++ po/initial-setup.pot | 41 ++++++++++++++++ setup.py | 11 ----- 9 files changed, 144 insertions(+), 73 deletions(-) delete mode 100644 locale/cs_CZ/LC_MESSAGES/initial-setup.po delete mode 100644 locale/initial-setup.pot create mode 100644 po/Makefile create mode 100644 po/initial-setup.pot
diff --git a/.tx/config b/.tx/config index 65fbeef..c1c5c47 100644 --- a/.tx/config +++ b/.tx/config @@ -1,8 +1,8 @@ [main] -host = https://www.transifex.net +host = https://www.transifex.com
[initial-setup.master] -file_filter = locale/<lang>/LC_MESSAGES/initial-setup.po -source_file = locale/initial-setup.pot +file_filter = po/<lang>.po +source_file = po/initial-setup.pot source_lang = en -type = PO \ No newline at end of file + diff --git a/MANIFEST.in b/MANIFEST.in index 48af4cd..60d27e6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,7 +1,8 @@ include COPYING +include Makefile recursive-include systemd * recursive-include scripts * -recursive-include locale *.po *.pot +recursive-include po *.po *.pot Makefile recursive-include modules *.py *.glade *.txt recursive-include initial_setup *.py *.glade *.txt recursive-exclude modules *.pyc *.pyo diff --git a/Makefile b/Makefile index 8264080..f890124 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ -# Makefile.am for anaconda +# Taken from the anaconda sources # -# Copyright (C) 2009 Red Hat, Inc. +# Copyright (C) 2009-2013 Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published @@ -20,6 +20,13 @@ ANACONDA_PATH=${HOME}/Work/anaconda/msivak PYKICKSTART_PATH=${HOME}/Work/pykickstart/master
+default: all + +all: po-files + +po-files: + $(MAKE) -C po + # GUI TESTING rungui: ANACONDA_DATA=${ANACONDA_PATH}/data \ @@ -65,3 +72,12 @@ runpy: GLADE_CATALOG_SEARCH_PATH=${ANACONDA_PATH}/widgets/glade \ GLADE_MODULE_SEARCH_PATH=${ANACONDA_PATH}/widgets/src/.libs \ ipython + +potfile: + $(MAKE) -C po potfile + +po-pull: + tx pull -a --disable-overwrite + +install-po-files: + $(MAKE) -C po install diff --git a/initial-setup.spec b/initial-setup.spec index a3bb6db..8304044 100644 --- a/initial-setup.spec +++ b/initial-setup.spec @@ -25,7 +25,6 @@ BuildRequires: gtk-doc BuildRequires: gobject-introspection-devel BuildRequires: glade-devel BuildRequires: pygobject3 -BuildRequires: python-babel BuildRequires: anaconda >= 19.13 BuildRequires: python-di Requires: gtk3 @@ -51,13 +50,14 @@ rm -rf *.egg-info
%build %{__python} setup.py build -%{__python} setup.py compile_catalog -D %{name} -d locale +make po-files
%check %{__python} setup.py nosetests
%install %{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT +make install-po-files %find_lang %{name}
%post diff --git a/locale/cs_CZ/LC_MESSAGES/initial-setup.po b/locale/cs_CZ/LC_MESSAGES/initial-setup.po deleted file mode 100644 index 189caf7..0000000 --- a/locale/cs_CZ/LC_MESSAGES/initial-setup.po +++ /dev/null @@ -1,27 +0,0 @@ -# Czech (Czech Republic) translations for initial-setup. -# Copyright (C) 2013 Red Hat -# This file is distributed under the same license as the initial-setup -# project. -# Martin Sivák msivak@redhat.com, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: initial-setup 0.1\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2013-01-11 15:10+0100\n" -"PO-Revision-Date: 2013-01-11 15:12+0100\n" -"Last-Translator: Martin Sivák msivak@redhat.com\n" -"Language-Team: cs_CZ LL@li.org\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.6\n" - -#: initial_setup/gui/gui.py:20 -msgid "" -"Are you sure you want to quit the configuration process?\n" -"You might end up with unusable system if you do." -msgstr "Opravdu chcete ukončit konfiguraci?\nSystém může zůstat nepoužitelný, pokud to uděláte." - diff --git a/locale/initial-setup.pot b/locale/initial-setup.pot deleted file mode 100644 index 08b2dec..0000000 --- a/locale/initial-setup.pot +++ /dev/null @@ -1,26 +0,0 @@ -# Translations template for initial-setup. -# Copyright (C) 2013 ORGANIZATION -# This file is distributed under the same license as the initial-setup -# project. -# FIRST AUTHOR EMAIL@ADDRESS, 2013. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: initial-setup 0.1\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2013-01-17 14:38+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME EMAIL@ADDRESS\n" -"Language-Team: LANGUAGE LL@li.org\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.6\n" - -#: initial_setup/gui/gui.py:20 -msgid "" -"Are you sure you want to quit the configuration process?\n" -"You might end up with unusable system if you do." -msgstr "" - diff --git a/po/Makefile b/po/Makefile new file mode 100644 index 0000000..febb30a --- /dev/null +++ b/po/Makefile @@ -0,0 +1,77 @@ +# +# taken from python-meh sources +# Makefile for the PO files (translation) catalog +# +# $Id$ + +TOP = ../.. + +# What is this package? +NLSPACKAGE = initial-setup +POTFILE = $(NLSPACKAGE).pot +INSTALL = /usr/bin/install -c +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_DIR = /usr/bin/install -d + +# destination directory +INSTALL_NLS_DIR = $(RPM_BUILD_ROOT)/usr/share/locale + +# PO catalog handling +MSGMERGE = msgmerge -v +XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) \ + --add-comments +MSGFMT = msgfmt --statistics --verbose + +# What do we need to do +POFILES = $(wildcard *.po) +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) +PYSRC = $(wildcard ../initial_setup/*.py ../initial_setup/*/*.py ../initial_setup/*/*/*.py) +GLADEFILES = $(wildcard ../initial_setup/*/*/*.glade) + +all:: update-po $(MOFILES) + +potfile: $(PYSRC) glade-po + $(XGETTEXT) -L Python --keyword=_ --keyword=N_ $(PYSRC) tmp/*.h + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ + rm -f $(NLSPACKAGE).po; \ + else \ + mv -f $(NLSPACKAGE).po $(POTFILE); \ + fi; \ + +glade-po: $(GLADEFILES) + rm -rf tmp/ + for f in $(GLADEFILES); do \ + intltool-extract --type=gettext/glade -l $$f ;\ + done + +update-po: Makefile refresh-po + +refresh-po: Makefile + for cat in $(POFILES); do \ + lang=`basename $$cat .po`; \ + if $(MSGMERGE) $$lang.po $(POTFILE) > $$lang.pot ; then \ + mv -f $$lang.pot $$lang.po ; \ + echo "$(MSGMERGE) of $$lang succeeded" ; \ + else \ + echo "$(MSGMERGE) of $$lang failed" ; \ + rm -f $$lang.pot ; \ + fi \ + done + +clean: + @rm -fv *mo *~ .depend + @rm -rf tmp + +install: $(MOFILES) + @for n in $(MOFILES); do \ + l=`basename $$n .mo`; \ + $(INSTALL_DIR) $(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ + $(INSTALL_DATA) --verbose $$n $(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/$(NLSPACKAGE).mo; \ + done + +%.mo: %.po + $(MSGFMT) -o $@ $< + +.PHONY: missing depend + + diff --git a/po/initial-setup.pot b/po/initial-setup.pot new file mode 100644 index 0000000..bdc3e22 --- /dev/null +++ b/po/initial-setup.pot @@ -0,0 +1,41 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR EMAIL@ADDRESS, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-09-09 12:57+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME EMAIL@ADDRESS\n" +"Language-Team: LANGUAGE LL@li.org\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../initial_setup/tui/tui.py:15 ../initial_setup/gui/gui.py:17 +msgid "" +"Are you sure you want to quit the configuration process?\n" +"You might end up with unusable system if you do." +msgstr "" + +#: ../initial_setup/tui/hubs/initial_setup_hub.py:37 +#, python-format +msgid "Initial setup of %(product)s" +msgstr "" + +#: ../initial_setup/tui/hubs/initial_setup_hub.py:39 +msgid "Initial setup" +msgstr "" + +#: tmp/initial_setup.glade.h:1 +msgid "_QUIT" +msgstr "" + +#: tmp/initial_setup.glade.h:2 +msgid "_FINISH CONFIGURATION" +msgstr "" diff --git a/setup.py b/setup.py index 0b5757d..b1e0ca7 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,6 @@
import os from setuptools import setup, find_packages -from babel.messages import frontend as babel from glob import *
# Utility function to read the README file. @@ -36,12 +35,6 @@ def read(fname): data_files = [('/usr/lib/systemd/system', glob('systemd/*.service')), ('/usr/share/initial-setup/modules', glob('modules/*'))]
-# add localization files -data_files += [('/usr/share/locale/%s/LC_MESSAGES' % dirname, - ['locale/%s/LC_MESSAGES/initial-setup.mo' % dirname]) - for dirname in os.listdir("locale") - if not dirname.endswith(".pot")] - # add the firstboot start script for s390 architectures if os.uname()[4].startswith('s390'): data_files.append(('/etc/profile.d', ['scripts/initial-setup.sh'])) @@ -73,8 +66,4 @@ setup( "Topic :: System :: Systems Administration", "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", ], - cmdclass = {'compile_catalog': babel.compile_catalog, - 'extract_messages': babel.extract_messages, - 'init_catalog': babel.init_catalog, - 'update_catalog': babel.update_catalog} )
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com --- initial_setup/gui/gui.py | 5 +++-- initial_setup/tui/hubs/initial_setup_hub.py | 5 +++-- initial_setup/tui/tui.py | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/initial_setup/gui/gui.py b/initial_setup/gui/gui.py index 3afe5da..e41e92a 100644 --- a/initial_setup/gui/gui.py +++ b/initial_setup/gui/gui.py @@ -7,11 +7,12 @@ from pyanaconda.ui.common import collect, FirstbootSpokeMixIn import os from gi.repository import Gdk import logging +import gettext from di import inject, usesclassinject
# localization -_ = lambda t: t -N_ = lambda t: t +_ = lambda x: gettext.ldgettext("initial-setup", x) +N_ = lambda x: x
class InitialSetupQuitDialog(QuitDialog): MESSAGE = N_("Are you sure you want to quit the configuration process?\n" diff --git a/initial_setup/tui/hubs/initial_setup_hub.py b/initial_setup/tui/hubs/initial_setup_hub.py index 565aaee..804acaf 100644 --- a/initial_setup/tui/hubs/initial_setup_hub.py +++ b/initial_setup/tui/hubs/initial_setup_hub.py @@ -3,12 +3,13 @@ from pyanaconda.ui.tui.spokes import TUISpoke from pyanaconda.ui.common import collect from initial_setup import product import os +import gettext
__all__ = ["InitialSetupMainHub"]
# localization -_ = lambda t: t -N_ = lambda t: t +_ = lambda x: gettext.ldgettext("initial-setup", x) +N_ = lambda x: x
def collect_spokes(mask_paths): """Return a list of all spoke subclasses that should appear for a given diff --git a/initial_setup/tui/tui.py b/initial_setup/tui/tui.py index 05cbd2c..de00095 100644 --- a/initial_setup/tui/tui.py +++ b/initial_setup/tui/tui.py @@ -6,11 +6,12 @@ import pyanaconda.ui.tui.spokes from pyanaconda.ui.common import collect, FirstbootSpokeMixIn import os import logging +import gettext from di import inject, usesclassinject
# localization -_ = lambda t: t -N_ = lambda t: t +_ = lambda x: gettext.ldgettext("initial-setup", x) +N_ = lambda x: x
QUIT_MESSAGE = N_("Are you sure you want to quit the configuration process?\n" "You might end up with unusable system if you do.")
On 09/09/2013 08:09 AM, Vratislav Podzimek wrote:
Patches that make translations in the build process and runtime of the Initial Setup work properly.
Vratislav Podzimek (2): Make handling translations easier Make translations work
.tx/config | 8 +-- MANIFEST.in | 3 +- Makefile | 20 +++++++- initial-setup.spec | 4 +- initial_setup/gui/gui.py | 5 +- initial_setup/tui/hubs/initial_setup_hub.py | 5 +- initial_setup/tui/tui.py | 5 +- locale/cs_CZ/LC_MESSAGES/initial-setup.po | 27 ---------- locale/initial-setup.pot | 26 ---------- po/Makefile | 77 +++++++++++++++++++++++++++++ po/initial-setup.pot | 41 +++++++++++++++ setup.py | 11 ----- 12 files changed, 153 insertions(+), 79 deletions(-) delete mode 100644 locale/cs_CZ/LC_MESSAGES/initial-setup.po delete mode 100644 locale/initial-setup.pot create mode 100644 po/Makefile create mode 100644 po/initial-setup.pot
Ack to both of these
anaconda-patches@lists.fedorahosted.org