* Translate or not? @ 2022-04-01 9:57 Petr Lautrbach 2022-04-01 9:57 ` [PATCH] Split po/ translation files into the relevant sub-directories Petr Lautrbach 0 siblings, 1 reply; 4+ messages in thread From: Petr Lautrbach @ 2022-04-01 9:57 UTC (permalink / raw) To: selinux Hello, the translations in this project wasn't really updated since 2013. There was only a minor French translation update in 2016. OTOH Fedora project still provides translations which are used there https://translate.fedoraproject.org/projects/selinux/ Also there's was a split back in 2016 which moved gui, python and sandbox out of policycoreutils. The following patch splits also the translations. And there's second patch available in my github repository which updates the translations from https://translate.fedoraproject.org/projects/selinux/ and which is too big for this list: https://github.com/bachradsusi/SELinuxProject-selinux/commit/afa35aea4a95089d9c99504e627fb573d836f7e8 Thanks, Petr ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] Split po/ translation files into the relevant sub-directories 2022-04-01 9:57 Translate or not? Petr Lautrbach @ 2022-04-01 9:57 ` Petr Lautrbach 2022-04-04 21:08 ` James Carter 0 siblings, 1 reply; 4+ messages in thread From: Petr Lautrbach @ 2022-04-01 9:57 UTC (permalink / raw) To: selinux; +Cc: Petr Lautrbach When policycoreutils was split into policycoreutils/ python/ gui/ and sandbox/ sub-directories, po/ translation files stayed in policycoreutils/. This commit splits original policycoreutils translations to policycoreutils, selinux-python, selinux-gui, and selinux-sandbox. See original Fedora issue https://github.com/fedora-selinux/selinux/issues/43 Signed-off-by: Petr Lautrbach <plautrba@redhat.com> --- gui/Makefile | 4 + gui/booleansPage.py | 2 +- gui/domainsPage.py | 2 +- gui/fcontextPage.py | 2 +- gui/loginsPage.py | 2 +- gui/modulesPage.py | 2 +- gui/po/Makefile | 84 +++++++++++++++++++ gui/po/POTFILES | 17 ++++ gui/polgengui.py | 2 +- gui/portsPage.py | 2 +- gui/semanagePage.py | 2 +- gui/statusPage.py | 2 +- gui/system-config-selinux.py | 2 +- gui/usersPage.py | 2 +- policycoreutils/po/Makefile | 72 ++--------------- policycoreutils/po/POTFILES | 9 +++ python/Makefile | 2 +- python/chcat/chcat | 2 +- python/po/Makefile | 85 ++++++++++++++++++++ python/po/POTFILES | 10 +++ python/semanage/semanage | 2 +- python/semanage/seobject.py | 2 +- python/sepolgen/src/sepolgen/sepolgeni18n.py | 2 +- python/sepolicy/sepolicy.py | 2 +- python/sepolicy/sepolicy/__init__.py | 2 +- python/sepolicy/sepolicy/generate.py | 2 +- python/sepolicy/sepolicy/gui.py | 2 +- python/sepolicy/sepolicy/interface.py | 2 +- sandbox/Makefile | 3 + sandbox/po/Makefile | 84 +++++++++++++++++++ sandbox/po/POTFILES | 1 + sandbox/sandbox | 2 +- 32 files changed, 324 insertions(+), 89 deletions(-) create mode 100644 gui/po/Makefile create mode 100644 gui/po/POTFILES create mode 100644 policycoreutils/po/POTFILES create mode 100644 python/po/Makefile create mode 100644 python/po/POTFILES create mode 100644 sandbox/po/Makefile create mode 100644 sandbox/po/POTFILES diff --git a/gui/Makefile b/gui/Makefile index ca965c942912..4035fb21b8c9 100644 --- a/gui/Makefile +++ b/gui/Makefile @@ -22,6 +22,7 @@ system-config-selinux.ui \ usersPage.py all: $(TARGETS) system-config-selinux.py polgengui.py + (cd po && $(MAKE) $@) install: all -mkdir -p $(DESTDIR)$(MANDIR)/man8 @@ -54,7 +55,10 @@ install: all install -m 644 sepolicy_$${i}.png $(DESTDIR)$(DATADIR)/icons/hicolor/$${i}x$${i}/apps/sepolicy.png; \ done install -m 644 org.selinux.config.policy $(DESTDIR)$(DATADIR)/polkit-1/actions/ + (cd po && $(MAKE) $@) + clean: + (cd po && $(MAKE) $@) indent: diff --git a/gui/booleansPage.py b/gui/booleansPage.py index 7849bea26a06..dd12b6d6ab86 100644 --- a/gui/booleansPage.py +++ b/gui/booleansPage.py @@ -38,7 +38,7 @@ DISABLED = 2 ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/domainsPage.py b/gui/domainsPage.py index bad5140d8c59..6bbe4de5884f 100644 --- a/gui/domainsPage.py +++ b/gui/domainsPage.py @@ -30,7 +30,7 @@ from semanagePage import * ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/fcontextPage.py b/gui/fcontextPage.py index d26aa1b405a9..52292cae01d2 100644 --- a/gui/fcontextPage.py +++ b/gui/fcontextPage.py @@ -47,7 +47,7 @@ class context: ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/loginsPage.py b/gui/loginsPage.py index b67eb8bc42af..cbfb0cc23f65 100644 --- a/gui/loginsPage.py +++ b/gui/loginsPage.py @@ -29,7 +29,7 @@ from semanagePage import * ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/modulesPage.py b/gui/modulesPage.py index 0584acf9b3a4..35a0129bab9c 100644 --- a/gui/modulesPage.py +++ b/gui/modulesPage.py @@ -30,7 +30,7 @@ from semanagePage import * ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/po/Makefile b/gui/po/Makefile new file mode 100644 index 000000000000..7ccd48eb2422 --- /dev/null +++ b/gui/po/Makefile @@ -0,0 +1,84 @@ +# +# Makefile for the PO files (translation) catalog +# + +PREFIX ?= /usr + +# What is this package? +NLSPACKAGE = gui +POTFILE = $(NLSPACKAGE).pot +INSTALL = /usr/bin/install -c -p +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_DIR = /usr/bin/install -d + +# destination directory +INSTALL_NLS_DIR = $(PREFIX)/share/locale + +# PO catalog handling +MSGMERGE = msgmerge +MSGMERGE_FLAGS = -q +XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) +MSGFMT = msgfmt + +# All possible linguas +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) + +# Only the files matching what the user has set in LINGUAS +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) + +# if no valid LINGUAS, build all languages +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) + +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) +POTFILES = $(shell cat POTFILES) + +#default:: clean + +all:: $(MOFILES) + +$(POTFILE): $(POTFILES) + $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ + rm -f $(NLSPACKAGE).po; \ + else \ + mv -f $(NLSPACKAGE).po $(POTFILE); \ + fi; \ + + +refresh-po: Makefile + for cat in $(POFILES); do \ + lang=`basename $$cat .po`; \ + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ + done + +%.mo: %.po + $(MSGFMT) -o $@ $< +report: + @for cat in $(wildcard *.po); do \ + echo -n "$$cat: "; \ + msgfmt -v --statistics -o /dev/null $$cat; \ + done + +.PHONY: missing depend + +relabel: + +test: diff --git a/gui/po/POTFILES b/gui/po/POTFILES new file mode 100644 index 000000000000..1795c5c1951b --- /dev/null +++ b/gui/po/POTFILES @@ -0,0 +1,17 @@ +../booleansPage.py +../domainsPage.py +../fcontextPage.py +../loginsPage.py +../modulesPage.py +../org.selinux.config.policy +../polgengui.py +../polgen.ui +../portsPage.py +../selinux-polgengui.desktop +../semanagePage.py +../sepolicy.desktop +../statusPage.py +../system-config-selinux.desktop +../system-config-selinux.py +../system-config-selinux.ui +../usersPage.py diff --git a/gui/polgengui.py b/gui/polgengui.py index d284ded65279..01f541bafae8 100644 --- a/gui/polgengui.py +++ b/gui/polgengui.py @@ -63,7 +63,7 @@ def get_all_modules(): ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/portsPage.py b/gui/portsPage.py index 30f58383bc1d..a537ecc8c0a1 100644 --- a/gui/portsPage.py +++ b/gui/portsPage.py @@ -35,7 +35,7 @@ from semanagePage import * ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/semanagePage.py b/gui/semanagePage.py index 4127804fbbee..5361d69c1313 100644 --- a/gui/semanagePage.py +++ b/gui/semanagePage.py @@ -22,7 +22,7 @@ from gi.repository import Gdk, Gtk ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/statusPage.py b/gui/statusPage.py index 766854b19cba..a8f079b9b163 100644 --- a/gui/statusPage.py +++ b/gui/statusPage.py @@ -35,7 +35,7 @@ RELABELFILE = "/.autorelabel" ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/system-config-selinux.py b/gui/system-config-selinux.py index 3f70122b87e8..8c46c987b974 100644 --- a/gui/system-config-selinux.py +++ b/gui/system-config-selinux.py @@ -45,7 +45,7 @@ import selinux ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/gui/usersPage.py b/gui/usersPage.py index 26794ed5c3f3..d15d4c5a71dd 100644 --- a/gui/usersPage.py +++ b/gui/usersPage.py @@ -29,7 +29,7 @@ from semanagePage import * ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-gui" try: import gettext kwargs = {} diff --git a/policycoreutils/po/Makefile b/policycoreutils/po/Makefile index 575e143122e6..5ff92bff6fdc 100644 --- a/policycoreutils/po/Makefile +++ b/policycoreutils/po/Makefile @@ -3,7 +3,6 @@ # PREFIX ?= /usr -TOP = ../.. # What is this package? NLSPACKAGE = policycoreutils @@ -32,74 +31,13 @@ USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) MOFILES = $(patsubst %.po,%.mo,$(POFILES)) -POTFILES = \ - ../run_init/open_init_pty.c \ - ../run_init/run_init.c \ - ../semodule_link/semodule_link.c \ - ../audit2allow/audit2allow \ - ../semanage/seobject.py \ - ../setsebool/setsebool.c \ - ../newrole/newrole.c \ - ../load_policy/load_policy.c \ - ../sestatus/sestatus.c \ - ../semodule/semodule.c \ - ../setfiles/setfiles.c \ - ../semodule_package/semodule_package.c \ - ../semodule_deps/semodule_deps.c \ - ../semodule_expand/semodule_expand.c \ - ../scripts/chcat \ - ../scripts/fixfiles \ - ../restorecond/stringslist.c \ - ../restorecond/restorecond.h \ - ../restorecond/utmpwatcher.h \ - ../restorecond/stringslist.h \ - ../restorecond/restorecond.c \ - ../restorecond/utmpwatcher.c \ - ../gui/booleansPage.py \ - ../gui/fcontextPage.py \ - ../gui/loginsPage.py \ - ../gui/mappingsPage.py \ - ../gui/modulesPage.py \ - ../gui/polgen.glade \ - ../gui/polgengui.py \ - ../gui/portsPage.py \ - ../gui/semanagePage.py \ - ../gui/statusPage.py \ - ../gui/system-config-selinux.glade \ - ../gui/system-config-selinux.py \ - ../gui/usersPage.py \ - ../secon/secon.c \ - booleans.py \ - ../sepolicy/sepolicy.py \ - ../sepolicy/sepolicy/communicate.py \ - ../sepolicy/sepolicy/__init__.py \ - ../sepolicy/sepolicy/network.py \ - ../sepolicy/sepolicy/generate.py \ - ../sepolicy/sepolicy/sepolicy.glade \ - ../sepolicy/sepolicy/gui.py \ - ../sepolicy/sepolicy/manpage.py \ - ../sepolicy/sepolicy/transition.py \ - ../sepolicy/sepolicy/templates/executable.py \ - ../sepolicy/sepolicy/templates/__init__.py \ - ../sepolicy/sepolicy/templates/network.py \ - ../sepolicy/sepolicy/templates/rw.py \ - ../sepolicy/sepolicy/templates/script.py \ - ../sepolicy/sepolicy/templates/semodule.py \ - ../sepolicy/sepolicy/templates/tmp.py \ - ../sepolicy/sepolicy/templates/user.py \ - ../sepolicy/sepolicy/templates/var_lib.py \ - ../sepolicy/sepolicy/templates/var_log.py \ - ../sepolicy/sepolicy/templates/var_run.py \ - ../sepolicy/sepolicy/templates/var_spool.py +POTFILES = $(shell cat POTFILES) #default:: clean -all:: $(MOFILES) +all:: $(POTFILE) $(MOFILES) -booleans.py: - sepolicy booleans -a > booleans.py - -$(POTFILE): $(POTFILES) booleans.py +$(POTFILE): $(POTFILES) $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ rm -f $(NLSPACKAGE).po; \ @@ -107,8 +45,6 @@ $(POTFILE): $(POTFILES) booleans.py mv -f $(NLSPACKAGE).po $(POTFILE); \ fi; \ -update-po: Makefile $(POTFILE) refresh-po - @rm -f booleans.py refresh-po: Makefile for cat in $(POFILES); do \ @@ -144,3 +80,5 @@ report: .PHONY: missing depend relabel: + +test: diff --git a/policycoreutils/po/POTFILES b/policycoreutils/po/POTFILES new file mode 100644 index 000000000000..12237dc61ee4 --- /dev/null +++ b/policycoreutils/po/POTFILES @@ -0,0 +1,9 @@ +../run_init/open_init_pty.c +../run_init/run_init.c +../setsebool/setsebool.c +../newrole/newrole.c +../load_policy/load_policy.c +../sestatus/sestatus.c +../semodule/semodule.c +../setfiles/setfiles.c +../secon/secon.c diff --git a/python/Makefile b/python/Makefile index 9b66d52fbd4d..00312dbdb5c6 100644 --- a/python/Makefile +++ b/python/Makefile @@ -1,4 +1,4 @@ -SUBDIRS = sepolicy audit2allow semanage sepolgen chcat +SUBDIRS = sepolicy audit2allow semanage sepolgen chcat po all install relabel clean indent test: @for subdir in $(SUBDIRS); do \ diff --git a/python/chcat/chcat b/python/chcat/chcat index fdd2e46ee3f9..839ddd3b54b6 100755 --- a/python/chcat/chcat +++ b/python/chcat/chcat @@ -30,7 +30,7 @@ import getopt import selinux import seobject -PROGNAME = "policycoreutils" +PROGNAME = "selinux-python" try: import gettext kwargs = {} diff --git a/python/po/Makefile b/python/po/Makefile new file mode 100644 index 000000000000..05e49f0cc274 --- /dev/null +++ b/python/po/Makefile @@ -0,0 +1,85 @@ +# +# Makefile for the PO files (translation) catalog +# + +PREFIX ?= /usr + +# What is this package? +NLSPACKAGE = python +POTFILE = $(NLSPACKAGE).pot +INSTALL = /usr/bin/install -c -p +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_DIR = /usr/bin/install -d + +# destination directory +INSTALL_NLS_DIR = $(PREFIX)/share/locale + +# PO catalog handling +MSGMERGE = msgmerge +MSGMERGE_FLAGS = -q +XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) +MSGFMT = msgfmt + +# All possible linguas +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) + +# Only the files matching what the user has set in LINGUAS +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) + +# if no valid LINGUAS, build all languages +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) + +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) +POTFILES = $(shell cat POTFILES) + +#default:: clean + +all:: $(MOFILES) + +$(POTFILE): $(POTFILES) + $(XGETTEXT) -L Python --keyword=_ --keyword=N_ $(POTFILES) + $(XGETTEXT) -j --keyword=_ --keyword=N_ ../sepolicy/sepolicy/sepolicy.glade + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ + rm -f $(NLSPACKAGE).po; \ + else \ + mv -f $(NLSPACKAGE).po $(POTFILE); \ + fi; \ + + +refresh-po: Makefile + for cat in $(POFILES); do \ + lang=`basename $$cat .po`; \ + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ + done + +%.mo: %.po + $(MSGFMT) -o $@ $< +report: + @for cat in $(wildcard *.po); do \ + echo -n "$$cat: "; \ + msgfmt -v --statistics -o /dev/null $$cat; \ + done + +.PHONY: missing depend + +relabel: + +test: diff --git a/python/po/POTFILES b/python/po/POTFILES new file mode 100644 index 000000000000..128eb870a69e --- /dev/null +++ b/python/po/POTFILES @@ -0,0 +1,10 @@ +../audit2allow/audit2allow +../chcat/chcat +../semanage/semanage +../semanage/seobject.py +../sepolgen/src/sepolgen/interfaces.py +../sepolicy/sepolicy/generate.py +../sepolicy/sepolicy/gui.py +../sepolicy/sepolicy/__init__.py +../sepolicy/sepolicy/interface.py +../sepolicy/sepolicy.py diff --git a/python/semanage/semanage b/python/semanage/semanage index ff9fb66b1411..12bb159ef649 100644 --- a/python/semanage/semanage +++ b/python/semanage/semanage @@ -30,7 +30,7 @@ import seobject import sys import traceback -PROGNAME = "policycoreutils" +PROGNAME = "selinux-python" try: import gettext kwargs = {} diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py index 21adbf6eb74f..69e60db80060 100644 --- a/python/semanage/seobject.py +++ b/python/semanage/seobject.py @@ -29,7 +29,7 @@ import sys import stat import socket from semanage import * -PROGNAME = "policycoreutils" +PROGNAME = "selinux-python" import sepolicy from setools.policyrep import SELinuxPolicy from setools.typequery import TypeQuery diff --git a/python/sepolgen/src/sepolgen/sepolgeni18n.py b/python/sepolgen/src/sepolgen/sepolgeni18n.py index 998c4356415c..56ebd807c69c 100644 --- a/python/sepolgen/src/sepolgen/sepolgeni18n.py +++ b/python/sepolgen/src/sepolgen/sepolgeni18n.py @@ -19,7 +19,7 @@ try: import gettext - t = gettext.translation( 'yumex' ) + t = gettext.translation( 'selinux-python' ) _ = t.gettext except: def _(str): diff --git a/python/sepolicy/sepolicy.py b/python/sepolicy/sepolicy.py index 7b2230651099..32956e58f52e 100755 --- a/python/sepolicy/sepolicy.py +++ b/python/sepolicy/sepolicy.py @@ -28,7 +28,7 @@ import sepolicy from multiprocessing import Pool from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text import argparse -PROGNAME = "policycoreutils" +PROGNAME = "selinux-python" try: import gettext kwargs = {} diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py index e8654abbceb3..203ca25f4210 100644 --- a/python/sepolicy/sepolicy/__init__.py +++ b/python/sepolicy/sepolicy/__init__.py @@ -23,7 +23,7 @@ from setools.typeattrquery import TypeAttributeQuery from setools.typequery import TypeQuery from setools.userquery import UserQuery -PROGNAME = "policycoreutils" +PROGNAME = "selinux-python" try: import gettext kwargs = {} diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py index 4e1ed4e9dc31..43180ca6fda4 100644 --- a/python/sepolicy/sepolicy/generate.py +++ b/python/sepolicy/sepolicy/generate.py @@ -48,7 +48,7 @@ import sepolgen.defaults as defaults ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-python" try: import gettext kwargs = {} diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py index 1e86422b864a..c9ca158ddd09 100644 --- a/python/sepolicy/sepolicy/gui.py +++ b/python/sepolicy/sepolicy/gui.py @@ -41,7 +41,7 @@ import os import re import unicodedata -PROGNAME = "policycoreutils" +PROGNAME = "selinux-python" try: import gettext kwargs = {} diff --git a/python/sepolicy/sepolicy/interface.py b/python/sepolicy/sepolicy/interface.py index bdffb770f364..9d40aea1498d 100644 --- a/python/sepolicy/sepolicy/interface.py +++ b/python/sepolicy/sepolicy/interface.py @@ -30,7 +30,7 @@ __all__ = ['get_all_interfaces', 'get_interfaces_from_xml', 'get_admin', 'get_us ## ## I18N ## -PROGNAME = "policycoreutils" +PROGNAME = "selinux-python" try: import gettext kwargs = {} diff --git a/sandbox/Makefile b/sandbox/Makefile index 9da5e58db9e6..84cb5a39bf7e 100644 --- a/sandbox/Makefile +++ b/sandbox/Makefile @@ -13,6 +13,7 @@ override LDLIBS += -lselinux -lcap-ng SEUNSHARE_OBJS = seunshare.o all: sandbox seunshare sandboxX.sh start + (cd po && $(MAKE) $@) seunshare: $(SEUNSHARE_OBJS) @@ -39,12 +40,14 @@ install: all install -m 755 start $(DESTDIR)$(SHAREDIR) -mkdir -p $(DESTDIR)$(SYSCONFDIR) install -m 644 sandbox.conf $(DESTDIR)$(SYSCONFDIR)/sandbox + (cd po && $(MAKE) $@) test: @$(PYTHON) test_sandbox.py -v clean: -rm -f seunshare *.o *~ + (cd po && $(MAKE) $@) indent: ../../scripts/Lindent $(wildcard *.[ch]) diff --git a/sandbox/po/Makefile b/sandbox/po/Makefile new file mode 100644 index 000000000000..e75343649b67 --- /dev/null +++ b/sandbox/po/Makefile @@ -0,0 +1,84 @@ +# +# Makefile for the PO files (translation) catalog +# + +PREFIX ?= /usr + +# What is this package? +NLSPACKAGE = sandbox +POTFILE = $(NLSPACKAGE).pot +INSTALL = /usr/bin/install -c -p +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_DIR = /usr/bin/install -d + +# destination directory +INSTALL_NLS_DIR = $(PREFIX)/share/locale + +# PO catalog handling +MSGMERGE = msgmerge +MSGMERGE_FLAGS = -q +XGETTEXT = xgettext -L Python --default-domain=$(NLSPACKAGE) +MSGFMT = msgfmt + +# All possible linguas +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) + +# Only the files matching what the user has set in LINGUAS +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) + +# if no valid LINGUAS, build all languages +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) + +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) +POTFILES = $(shell cat POTFILES) + +#default:: clean + +all:: $(POTFILE) $(MOFILES) + +$(POTFILE): $(POTFILES) + $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ + rm -f $(NLSPACKAGE).po; \ + else \ + mv -f $(NLSPACKAGE).po $(POTFILE); \ + fi; \ + + +refresh-po: Makefile + for cat in $(POFILES); do \ + lang=`basename $$cat .po`; \ + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ + done + +%.mo: %.po + $(MSGFMT) -o $@ $< +report: + @for cat in $(wildcard *.po); do \ + echo -n "$$cat: "; \ + msgfmt -v --statistics -o /dev/null $$cat; \ + done + +.PHONY: missing depend + +relabel: + +test: diff --git a/sandbox/po/POTFILES b/sandbox/po/POTFILES new file mode 100644 index 000000000000..deff3f2f4656 --- /dev/null +++ b/sandbox/po/POTFILES @@ -0,0 +1 @@ +../sandbox diff --git a/sandbox/sandbox b/sandbox/sandbox index ca5f1e030a51..16c43b51eaaa 100644 --- a/sandbox/sandbox +++ b/sandbox/sandbox @@ -37,7 +37,7 @@ import sepolicy SEUNSHARE = "/usr/sbin/seunshare" SANDBOXSH = "/usr/share/sandbox/sandboxX.sh" -PROGNAME = "policycoreutils" +PROGNAME = "selinux-sandbox" try: import gettext kwargs = {} -- 2.35.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Split po/ translation files into the relevant sub-directories 2022-04-01 9:57 ` [PATCH] Split po/ translation files into the relevant sub-directories Petr Lautrbach @ 2022-04-04 21:08 ` James Carter 2022-04-06 9:32 ` Petr Lautrbach 0 siblings, 1 reply; 4+ messages in thread From: James Carter @ 2022-04-04 21:08 UTC (permalink / raw) To: Petr Lautrbach; +Cc: SElinux list On Fri, Apr 1, 2022 at 11:45 AM Petr Lautrbach <plautrba@redhat.com> wrote: > > When policycoreutils was split into policycoreutils/ python/ gui/ and sandbox/ > sub-directories, po/ translation files stayed in policycoreutils/. > > This commit splits original policycoreutils translations to > policycoreutils, selinux-python, selinux-gui, and selinux-sandbox. > > See original Fedora issue https://github.com/fedora-selinux/selinux/issues/43 > > Signed-off-by: Petr Lautrbach <plautrba@redhat.com> There is an extra space at the end of one of the lines as indicated below, but that can be fixed when merged. Acked-by: James Carter <jwcart2@gmail.com> > --- > gui/Makefile | 4 + > gui/booleansPage.py | 2 +- > gui/domainsPage.py | 2 +- > gui/fcontextPage.py | 2 +- > gui/loginsPage.py | 2 +- > gui/modulesPage.py | 2 +- > gui/po/Makefile | 84 +++++++++++++++++++ > gui/po/POTFILES | 17 ++++ > gui/polgengui.py | 2 +- > gui/portsPage.py | 2 +- > gui/semanagePage.py | 2 +- > gui/statusPage.py | 2 +- > gui/system-config-selinux.py | 2 +- > gui/usersPage.py | 2 +- > policycoreutils/po/Makefile | 72 ++--------------- > policycoreutils/po/POTFILES | 9 +++ > python/Makefile | 2 +- > python/chcat/chcat | 2 +- > python/po/Makefile | 85 ++++++++++++++++++++ > python/po/POTFILES | 10 +++ > python/semanage/semanage | 2 +- > python/semanage/seobject.py | 2 +- > python/sepolgen/src/sepolgen/sepolgeni18n.py | 2 +- > python/sepolicy/sepolicy.py | 2 +- > python/sepolicy/sepolicy/__init__.py | 2 +- > python/sepolicy/sepolicy/generate.py | 2 +- > python/sepolicy/sepolicy/gui.py | 2 +- > python/sepolicy/sepolicy/interface.py | 2 +- > sandbox/Makefile | 3 + > sandbox/po/Makefile | 84 +++++++++++++++++++ > sandbox/po/POTFILES | 1 + > sandbox/sandbox | 2 +- > 32 files changed, 324 insertions(+), 89 deletions(-) > create mode 100644 gui/po/Makefile > create mode 100644 gui/po/POTFILES > create mode 100644 policycoreutils/po/POTFILES > create mode 100644 python/po/Makefile > create mode 100644 python/po/POTFILES > create mode 100644 sandbox/po/Makefile > create mode 100644 sandbox/po/POTFILES > > diff --git a/gui/Makefile b/gui/Makefile > index ca965c942912..4035fb21b8c9 100644 > --- a/gui/Makefile > +++ b/gui/Makefile > @@ -22,6 +22,7 @@ system-config-selinux.ui \ > usersPage.py > > all: $(TARGETS) system-config-selinux.py polgengui.py > + (cd po && $(MAKE) $@) > > install: all > -mkdir -p $(DESTDIR)$(MANDIR)/man8 > @@ -54,7 +55,10 @@ install: all > install -m 644 sepolicy_$${i}.png $(DESTDIR)$(DATADIR)/icons/hicolor/$${i}x$${i}/apps/sepolicy.png; \ > done > install -m 644 org.selinux.config.policy $(DESTDIR)$(DATADIR)/polkit-1/actions/ > + (cd po && $(MAKE) $@) > + > clean: > + (cd po && $(MAKE) $@) > > indent: > > diff --git a/gui/booleansPage.py b/gui/booleansPage.py > index 7849bea26a06..dd12b6d6ab86 100644 > --- a/gui/booleansPage.py > +++ b/gui/booleansPage.py > @@ -38,7 +38,7 @@ DISABLED = 2 > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/domainsPage.py b/gui/domainsPage.py > index bad5140d8c59..6bbe4de5884f 100644 > --- a/gui/domainsPage.py > +++ b/gui/domainsPage.py > @@ -30,7 +30,7 @@ from semanagePage import * > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/fcontextPage.py b/gui/fcontextPage.py > index d26aa1b405a9..52292cae01d2 100644 > --- a/gui/fcontextPage.py > +++ b/gui/fcontextPage.py > @@ -47,7 +47,7 @@ class context: > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/loginsPage.py b/gui/loginsPage.py > index b67eb8bc42af..cbfb0cc23f65 100644 > --- a/gui/loginsPage.py > +++ b/gui/loginsPage.py > @@ -29,7 +29,7 @@ from semanagePage import * > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/modulesPage.py b/gui/modulesPage.py > index 0584acf9b3a4..35a0129bab9c 100644 > --- a/gui/modulesPage.py > +++ b/gui/modulesPage.py > @@ -30,7 +30,7 @@ from semanagePage import * > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/po/Makefile b/gui/po/Makefile > new file mode 100644 > index 000000000000..7ccd48eb2422 > --- /dev/null > +++ b/gui/po/Makefile > @@ -0,0 +1,84 @@ > +# > +# Makefile for the PO files (translation) catalog > +# > + > +PREFIX ?= /usr > + > +# What is this package? > +NLSPACKAGE = gui > +POTFILE = $(NLSPACKAGE).pot > +INSTALL = /usr/bin/install -c -p > +INSTALL_DATA = $(INSTALL) -m 644 > +INSTALL_DIR = /usr/bin/install -d > + > +# destination directory > +INSTALL_NLS_DIR = $(PREFIX)/share/locale > + > +# PO catalog handling > +MSGMERGE = msgmerge > +MSGMERGE_FLAGS = -q > +XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) > +MSGFMT = msgfmt > + > +# All possible linguas > +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) > + > +# Only the files matching what the user has set in LINGUAS > +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) > + > +# if no valid LINGUAS, build all languages > +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) > + > +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) > +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) > +POTFILES = $(shell cat POTFILES) > + > +#default:: clean > + > +all:: $(MOFILES) > + > +$(POTFILE): $(POTFILES) > + $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) > + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ > + rm -f $(NLSPACKAGE).po; \ > + else \ > + mv -f $(NLSPACKAGE).po $(POTFILE); \ > + fi; \ > + > + > +refresh-po: Makefile > + for cat in $(POFILES); do \ > + lang=`basename $$cat .po`; \ > + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ > + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ > + done > + > +%.mo: %.po > + $(MSGFMT) -o $@ $< > +report: > + @for cat in $(wildcard *.po); do \ > + echo -n "$$cat: "; \ > + msgfmt -v --statistics -o /dev/null $$cat; \ > + done > + > +.PHONY: missing depend > + > +relabel: > + > +test: > diff --git a/gui/po/POTFILES b/gui/po/POTFILES > new file mode 100644 > index 000000000000..1795c5c1951b > --- /dev/null > +++ b/gui/po/POTFILES > @@ -0,0 +1,17 @@ > +../booleansPage.py > +../domainsPage.py > +../fcontextPage.py > +../loginsPage.py > +../modulesPage.py > +../org.selinux.config.policy > +../polgengui.py > +../polgen.ui > +../portsPage.py > +../selinux-polgengui.desktop > +../semanagePage.py > +../sepolicy.desktop > +../statusPage.py > +../system-config-selinux.desktop > +../system-config-selinux.py > +../system-config-selinux.ui > +../usersPage.py > diff --git a/gui/polgengui.py b/gui/polgengui.py > index d284ded65279..01f541bafae8 100644 > --- a/gui/polgengui.py > +++ b/gui/polgengui.py > @@ -63,7 +63,7 @@ def get_all_modules(): > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/portsPage.py b/gui/portsPage.py > index 30f58383bc1d..a537ecc8c0a1 100644 > --- a/gui/portsPage.py > +++ b/gui/portsPage.py > @@ -35,7 +35,7 @@ from semanagePage import * > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/semanagePage.py b/gui/semanagePage.py > index 4127804fbbee..5361d69c1313 100644 > --- a/gui/semanagePage.py > +++ b/gui/semanagePage.py > @@ -22,7 +22,7 @@ from gi.repository import Gdk, Gtk > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/statusPage.py b/gui/statusPage.py > index 766854b19cba..a8f079b9b163 100644 > --- a/gui/statusPage.py > +++ b/gui/statusPage.py > @@ -35,7 +35,7 @@ RELABELFILE = "/.autorelabel" > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/system-config-selinux.py b/gui/system-config-selinux.py > index 3f70122b87e8..8c46c987b974 100644 > --- a/gui/system-config-selinux.py > +++ b/gui/system-config-selinux.py > @@ -45,7 +45,7 @@ import selinux > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/gui/usersPage.py b/gui/usersPage.py > index 26794ed5c3f3..d15d4c5a71dd 100644 > --- a/gui/usersPage.py > +++ b/gui/usersPage.py > @@ -29,7 +29,7 @@ from semanagePage import * > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-gui" > try: > import gettext > kwargs = {} > diff --git a/policycoreutils/po/Makefile b/policycoreutils/po/Makefile > index 575e143122e6..5ff92bff6fdc 100644 > --- a/policycoreutils/po/Makefile > +++ b/policycoreutils/po/Makefile > @@ -3,7 +3,6 @@ > # > > PREFIX ?= /usr > -TOP = ../.. > > # What is this package? > NLSPACKAGE = policycoreutils > @@ -32,74 +31,13 @@ USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) > > POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) > MOFILES = $(patsubst %.po,%.mo,$(POFILES)) > -POTFILES = \ > - ../run_init/open_init_pty.c \ > - ../run_init/run_init.c \ > - ../semodule_link/semodule_link.c \ > - ../audit2allow/audit2allow \ > - ../semanage/seobject.py \ > - ../setsebool/setsebool.c \ > - ../newrole/newrole.c \ > - ../load_policy/load_policy.c \ > - ../sestatus/sestatus.c \ > - ../semodule/semodule.c \ > - ../setfiles/setfiles.c \ > - ../semodule_package/semodule_package.c \ > - ../semodule_deps/semodule_deps.c \ > - ../semodule_expand/semodule_expand.c \ > - ../scripts/chcat \ > - ../scripts/fixfiles \ > - ../restorecond/stringslist.c \ > - ../restorecond/restorecond.h \ > - ../restorecond/utmpwatcher.h \ > - ../restorecond/stringslist.h \ > - ../restorecond/restorecond.c \ > - ../restorecond/utmpwatcher.c \ > - ../gui/booleansPage.py \ > - ../gui/fcontextPage.py \ > - ../gui/loginsPage.py \ > - ../gui/mappingsPage.py \ > - ../gui/modulesPage.py \ > - ../gui/polgen.glade \ > - ../gui/polgengui.py \ > - ../gui/portsPage.py \ > - ../gui/semanagePage.py \ > - ../gui/statusPage.py \ > - ../gui/system-config-selinux.glade \ > - ../gui/system-config-selinux.py \ > - ../gui/usersPage.py \ > - ../secon/secon.c \ > - booleans.py \ > - ../sepolicy/sepolicy.py \ > - ../sepolicy/sepolicy/communicate.py \ > - ../sepolicy/sepolicy/__init__.py \ > - ../sepolicy/sepolicy/network.py \ > - ../sepolicy/sepolicy/generate.py \ > - ../sepolicy/sepolicy/sepolicy.glade \ > - ../sepolicy/sepolicy/gui.py \ > - ../sepolicy/sepolicy/manpage.py \ > - ../sepolicy/sepolicy/transition.py \ > - ../sepolicy/sepolicy/templates/executable.py \ > - ../sepolicy/sepolicy/templates/__init__.py \ > - ../sepolicy/sepolicy/templates/network.py \ > - ../sepolicy/sepolicy/templates/rw.py \ > - ../sepolicy/sepolicy/templates/script.py \ > - ../sepolicy/sepolicy/templates/semodule.py \ > - ../sepolicy/sepolicy/templates/tmp.py \ > - ../sepolicy/sepolicy/templates/user.py \ > - ../sepolicy/sepolicy/templates/var_lib.py \ > - ../sepolicy/sepolicy/templates/var_log.py \ > - ../sepolicy/sepolicy/templates/var_run.py \ > - ../sepolicy/sepolicy/templates/var_spool.py > +POTFILES = $(shell cat POTFILES) > > #default:: clean > > -all:: $(MOFILES) > +all:: $(POTFILE) $(MOFILES) > > -booleans.py: > - sepolicy booleans -a > booleans.py > - > -$(POTFILE): $(POTFILES) booleans.py > +$(POTFILE): $(POTFILES) > $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) > @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ > rm -f $(NLSPACKAGE).po; \ > @@ -107,8 +45,6 @@ $(POTFILE): $(POTFILES) booleans.py > mv -f $(NLSPACKAGE).po $(POTFILE); \ > fi; \ > > -update-po: Makefile $(POTFILE) refresh-po > - @rm -f booleans.py > > refresh-po: Makefile > for cat in $(POFILES); do \ > @@ -144,3 +80,5 @@ report: > .PHONY: missing depend > > relabel: > + > +test: > diff --git a/policycoreutils/po/POTFILES b/policycoreutils/po/POTFILES > new file mode 100644 > index 000000000000..12237dc61ee4 > --- /dev/null > +++ b/policycoreutils/po/POTFILES > @@ -0,0 +1,9 @@ > +../run_init/open_init_pty.c > +../run_init/run_init.c > +../setsebool/setsebool.c > +../newrole/newrole.c > +../load_policy/load_policy.c > +../sestatus/sestatus.c > +../semodule/semodule.c > +../setfiles/setfiles.c > +../secon/secon.c > diff --git a/python/Makefile b/python/Makefile > index 9b66d52fbd4d..00312dbdb5c6 100644 > --- a/python/Makefile > +++ b/python/Makefile > @@ -1,4 +1,4 @@ > -SUBDIRS = sepolicy audit2allow semanage sepolgen chcat > +SUBDIRS = sepolicy audit2allow semanage sepolgen chcat po > > all install relabel clean indent test: > @for subdir in $(SUBDIRS); do \ > diff --git a/python/chcat/chcat b/python/chcat/chcat > index fdd2e46ee3f9..839ddd3b54b6 100755 > --- a/python/chcat/chcat > +++ b/python/chcat/chcat > @@ -30,7 +30,7 @@ import getopt > import selinux > import seobject > > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-python" > try: > import gettext > kwargs = {} > diff --git a/python/po/Makefile b/python/po/Makefile > new file mode 100644 > index 000000000000..05e49f0cc274 > --- /dev/null > +++ b/python/po/Makefile > @@ -0,0 +1,85 @@ > +# > +# Makefile for the PO files (translation) catalog > +# > + > +PREFIX ?= /usr > + > +# What is this package? > +NLSPACKAGE = python > +POTFILE = $(NLSPACKAGE).pot > +INSTALL = /usr/bin/install -c -p > +INSTALL_DATA = $(INSTALL) -m 644 > +INSTALL_DIR = /usr/bin/install -d > + > +# destination directory > +INSTALL_NLS_DIR = $(PREFIX)/share/locale > + > +# PO catalog handling > +MSGMERGE = msgmerge > +MSGMERGE_FLAGS = -q > +XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) > +MSGFMT = msgfmt > + > +# All possible linguas > +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) > + > +# Only the files matching what the user has set in LINGUAS > +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) > + > +# if no valid LINGUAS, build all languages > +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) > + > +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) > +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) > +POTFILES = $(shell cat POTFILES) > + > +#default:: clean > + > +all:: $(MOFILES) > + > +$(POTFILE): $(POTFILES) Extra space at the end of the line above. > + $(XGETTEXT) -L Python --keyword=_ --keyword=N_ $(POTFILES) > + $(XGETTEXT) -j --keyword=_ --keyword=N_ ../sepolicy/sepolicy/sepolicy.glade > + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ > + rm -f $(NLSPACKAGE).po; \ > + else \ > + mv -f $(NLSPACKAGE).po $(POTFILE); \ > + fi; \ > + > + > +refresh-po: Makefile > + for cat in $(POFILES); do \ > + lang=`basename $$cat .po`; \ > + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ > + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ > + done > + > +%.mo: %.po > + $(MSGFMT) -o $@ $< > +report: > + @for cat in $(wildcard *.po); do \ > + echo -n "$$cat: "; \ > + msgfmt -v --statistics -o /dev/null $$cat; \ > + done > + > +.PHONY: missing depend > + > +relabel: > + > +test: > diff --git a/python/po/POTFILES b/python/po/POTFILES > new file mode 100644 > index 000000000000..128eb870a69e > --- /dev/null > +++ b/python/po/POTFILES > @@ -0,0 +1,10 @@ > +../audit2allow/audit2allow > +../chcat/chcat > +../semanage/semanage > +../semanage/seobject.py > +../sepolgen/src/sepolgen/interfaces.py > +../sepolicy/sepolicy/generate.py > +../sepolicy/sepolicy/gui.py > +../sepolicy/sepolicy/__init__.py > +../sepolicy/sepolicy/interface.py > +../sepolicy/sepolicy.py > diff --git a/python/semanage/semanage b/python/semanage/semanage > index ff9fb66b1411..12bb159ef649 100644 > --- a/python/semanage/semanage > +++ b/python/semanage/semanage > @@ -30,7 +30,7 @@ import seobject > import sys > import traceback > > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-python" > try: > import gettext > kwargs = {} > diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py > index 21adbf6eb74f..69e60db80060 100644 > --- a/python/semanage/seobject.py > +++ b/python/semanage/seobject.py > @@ -29,7 +29,7 @@ import sys > import stat > import socket > from semanage import * > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-python" > import sepolicy > from setools.policyrep import SELinuxPolicy > from setools.typequery import TypeQuery > diff --git a/python/sepolgen/src/sepolgen/sepolgeni18n.py b/python/sepolgen/src/sepolgen/sepolgeni18n.py > index 998c4356415c..56ebd807c69c 100644 > --- a/python/sepolgen/src/sepolgen/sepolgeni18n.py > +++ b/python/sepolgen/src/sepolgen/sepolgeni18n.py > @@ -19,7 +19,7 @@ > > try: > import gettext > - t = gettext.translation( 'yumex' ) > + t = gettext.translation( 'selinux-python' ) > _ = t.gettext > except: > def _(str): > diff --git a/python/sepolicy/sepolicy.py b/python/sepolicy/sepolicy.py > index 7b2230651099..32956e58f52e 100755 > --- a/python/sepolicy/sepolicy.py > +++ b/python/sepolicy/sepolicy.py > @@ -28,7 +28,7 @@ import sepolicy > from multiprocessing import Pool > from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text > import argparse > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-python" > try: > import gettext > kwargs = {} > diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py > index e8654abbceb3..203ca25f4210 100644 > --- a/python/sepolicy/sepolicy/__init__.py > +++ b/python/sepolicy/sepolicy/__init__.py > @@ -23,7 +23,7 @@ from setools.typeattrquery import TypeAttributeQuery > from setools.typequery import TypeQuery > from setools.userquery import UserQuery > > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-python" > try: > import gettext > kwargs = {} > diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py > index 4e1ed4e9dc31..43180ca6fda4 100644 > --- a/python/sepolicy/sepolicy/generate.py > +++ b/python/sepolicy/sepolicy/generate.py > @@ -48,7 +48,7 @@ import sepolgen.defaults as defaults > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-python" > try: > import gettext > kwargs = {} > diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py > index 1e86422b864a..c9ca158ddd09 100644 > --- a/python/sepolicy/sepolicy/gui.py > +++ b/python/sepolicy/sepolicy/gui.py > @@ -41,7 +41,7 @@ import os > import re > import unicodedata > > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-python" > try: > import gettext > kwargs = {} > diff --git a/python/sepolicy/sepolicy/interface.py b/python/sepolicy/sepolicy/interface.py > index bdffb770f364..9d40aea1498d 100644 > --- a/python/sepolicy/sepolicy/interface.py > +++ b/python/sepolicy/sepolicy/interface.py > @@ -30,7 +30,7 @@ __all__ = ['get_all_interfaces', 'get_interfaces_from_xml', 'get_admin', 'get_us > ## > ## I18N > ## > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-python" > try: > import gettext > kwargs = {} > diff --git a/sandbox/Makefile b/sandbox/Makefile > index 9da5e58db9e6..84cb5a39bf7e 100644 > --- a/sandbox/Makefile > +++ b/sandbox/Makefile > @@ -13,6 +13,7 @@ override LDLIBS += -lselinux -lcap-ng > SEUNSHARE_OBJS = seunshare.o > > all: sandbox seunshare sandboxX.sh start > + (cd po && $(MAKE) $@) > > seunshare: $(SEUNSHARE_OBJS) > > @@ -39,12 +40,14 @@ install: all > install -m 755 start $(DESTDIR)$(SHAREDIR) > -mkdir -p $(DESTDIR)$(SYSCONFDIR) > install -m 644 sandbox.conf $(DESTDIR)$(SYSCONFDIR)/sandbox > + (cd po && $(MAKE) $@) > > test: > @$(PYTHON) test_sandbox.py -v > > clean: > -rm -f seunshare *.o *~ > + (cd po && $(MAKE) $@) > > indent: > ../../scripts/Lindent $(wildcard *.[ch]) > diff --git a/sandbox/po/Makefile b/sandbox/po/Makefile > new file mode 100644 > index 000000000000..e75343649b67 > --- /dev/null > +++ b/sandbox/po/Makefile > @@ -0,0 +1,84 @@ > +# > +# Makefile for the PO files (translation) catalog > +# > + > +PREFIX ?= /usr > + > +# What is this package? > +NLSPACKAGE = sandbox > +POTFILE = $(NLSPACKAGE).pot > +INSTALL = /usr/bin/install -c -p > +INSTALL_DATA = $(INSTALL) -m 644 > +INSTALL_DIR = /usr/bin/install -d > + > +# destination directory > +INSTALL_NLS_DIR = $(PREFIX)/share/locale > + > +# PO catalog handling > +MSGMERGE = msgmerge > +MSGMERGE_FLAGS = -q > +XGETTEXT = xgettext -L Python --default-domain=$(NLSPACKAGE) > +MSGFMT = msgfmt > + > +# All possible linguas > +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) > + > +# Only the files matching what the user has set in LINGUAS > +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) > + > +# if no valid LINGUAS, build all languages > +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) > + > +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) > +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) > +POTFILES = $(shell cat POTFILES) > + > +#default:: clean > + > +all:: $(POTFILE) $(MOFILES) > + > +$(POTFILE): $(POTFILES) > + $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) > + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ > + rm -f $(NLSPACKAGE).po; \ > + else \ > + mv -f $(NLSPACKAGE).po $(POTFILE); \ > + fi; \ > + > + > +refresh-po: Makefile > + for cat in $(POFILES); do \ > + lang=`basename $$cat .po`; \ > + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ > + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ > + done > + > +%.mo: %.po > + $(MSGFMT) -o $@ $< > +report: > + @for cat in $(wildcard *.po); do \ > + echo -n "$$cat: "; \ > + msgfmt -v --statistics -o /dev/null $$cat; \ > + done > + > +.PHONY: missing depend > + > +relabel: > + > +test: > diff --git a/sandbox/po/POTFILES b/sandbox/po/POTFILES > new file mode 100644 > index 000000000000..deff3f2f4656 > --- /dev/null > +++ b/sandbox/po/POTFILES > @@ -0,0 +1 @@ > +../sandbox > diff --git a/sandbox/sandbox b/sandbox/sandbox > index ca5f1e030a51..16c43b51eaaa 100644 > --- a/sandbox/sandbox > +++ b/sandbox/sandbox > @@ -37,7 +37,7 @@ import sepolicy > > SEUNSHARE = "/usr/sbin/seunshare" > SANDBOXSH = "/usr/share/sandbox/sandboxX.sh" > -PROGNAME = "policycoreutils" > +PROGNAME = "selinux-sandbox" > try: > import gettext > kwargs = {} > -- > 2.35.1 > ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Split po/ translation files into the relevant sub-directories 2022-04-04 21:08 ` James Carter @ 2022-04-06 9:32 ` Petr Lautrbach 0 siblings, 0 replies; 4+ messages in thread From: Petr Lautrbach @ 2022-04-06 9:32 UTC (permalink / raw) To: SElinux list; +Cc: James Carter James Carter <jwcart2@gmail.com> writes: > On Fri, Apr 1, 2022 at 11:45 AM Petr Lautrbach <plautrba@redhat.com> wrote: >> >> When policycoreutils was split into policycoreutils/ python/ gui/ and sandbox/ >> sub-directories, po/ translation files stayed in policycoreutils/. >> >> This commit splits original policycoreutils translations to >> policycoreutils, selinux-python, selinux-gui, and selinux-sandbox. >> >> See original Fedora issue https://github.com/fedora-selinux/selinux/issues/43 >> >> Signed-off-by: Petr Lautrbach <plautrba@redhat.com> > > There is an extra space at the end of one of the lines as indicated > below, but that can be fixed when merged. > > Acked-by: James Carter <jwcart2@gmail.com> > Merged with fixed extra space, thanks! >> --- >> gui/Makefile | 4 + >> gui/booleansPage.py | 2 +- >> gui/domainsPage.py | 2 +- >> gui/fcontextPage.py | 2 +- >> gui/loginsPage.py | 2 +- >> gui/modulesPage.py | 2 +- >> gui/po/Makefile | 84 +++++++++++++++++++ >> gui/po/POTFILES | 17 ++++ >> gui/polgengui.py | 2 +- >> gui/portsPage.py | 2 +- >> gui/semanagePage.py | 2 +- >> gui/statusPage.py | 2 +- >> gui/system-config-selinux.py | 2 +- >> gui/usersPage.py | 2 +- >> policycoreutils/po/Makefile | 72 ++--------------- >> policycoreutils/po/POTFILES | 9 +++ >> python/Makefile | 2 +- >> python/chcat/chcat | 2 +- >> python/po/Makefile | 85 ++++++++++++++++++++ >> python/po/POTFILES | 10 +++ >> python/semanage/semanage | 2 +- >> python/semanage/seobject.py | 2 +- >> python/sepolgen/src/sepolgen/sepolgeni18n.py | 2 +- >> python/sepolicy/sepolicy.py | 2 +- >> python/sepolicy/sepolicy/__init__.py | 2 +- >> python/sepolicy/sepolicy/generate.py | 2 +- >> python/sepolicy/sepolicy/gui.py | 2 +- >> python/sepolicy/sepolicy/interface.py | 2 +- >> sandbox/Makefile | 3 + >> sandbox/po/Makefile | 84 +++++++++++++++++++ >> sandbox/po/POTFILES | 1 + >> sandbox/sandbox | 2 +- >> 32 files changed, 324 insertions(+), 89 deletions(-) >> create mode 100644 gui/po/Makefile >> create mode 100644 gui/po/POTFILES >> create mode 100644 policycoreutils/po/POTFILES >> create mode 100644 python/po/Makefile >> create mode 100644 python/po/POTFILES >> create mode 100644 sandbox/po/Makefile >> create mode 100644 sandbox/po/POTFILES >> >> diff --git a/gui/Makefile b/gui/Makefile >> index ca965c942912..4035fb21b8c9 100644 >> --- a/gui/Makefile >> +++ b/gui/Makefile >> @@ -22,6 +22,7 @@ system-config-selinux.ui \ >> usersPage.py >> >> all: $(TARGETS) system-config-selinux.py polgengui.py >> + (cd po && $(MAKE) $@) >> >> install: all >> -mkdir -p $(DESTDIR)$(MANDIR)/man8 >> @@ -54,7 +55,10 @@ install: all >> install -m 644 sepolicy_$${i}.png $(DESTDIR)$(DATADIR)/icons/hicolor/$${i}x$${i}/apps/sepolicy.png; \ >> done >> install -m 644 org.selinux.config.policy $(DESTDIR)$(DATADIR)/polkit-1/actions/ >> + (cd po && $(MAKE) $@) >> + >> clean: >> + (cd po && $(MAKE) $@) >> >> indent: >> >> diff --git a/gui/booleansPage.py b/gui/booleansPage.py >> index 7849bea26a06..dd12b6d6ab86 100644 >> --- a/gui/booleansPage.py >> +++ b/gui/booleansPage.py >> @@ -38,7 +38,7 @@ DISABLED = 2 >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/domainsPage.py b/gui/domainsPage.py >> index bad5140d8c59..6bbe4de5884f 100644 >> --- a/gui/domainsPage.py >> +++ b/gui/domainsPage.py >> @@ -30,7 +30,7 @@ from semanagePage import * >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/fcontextPage.py b/gui/fcontextPage.py >> index d26aa1b405a9..52292cae01d2 100644 >> --- a/gui/fcontextPage.py >> +++ b/gui/fcontextPage.py >> @@ -47,7 +47,7 @@ class context: >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/loginsPage.py b/gui/loginsPage.py >> index b67eb8bc42af..cbfb0cc23f65 100644 >> --- a/gui/loginsPage.py >> +++ b/gui/loginsPage.py >> @@ -29,7 +29,7 @@ from semanagePage import * >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/modulesPage.py b/gui/modulesPage.py >> index 0584acf9b3a4..35a0129bab9c 100644 >> --- a/gui/modulesPage.py >> +++ b/gui/modulesPage.py >> @@ -30,7 +30,7 @@ from semanagePage import * >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/po/Makefile b/gui/po/Makefile >> new file mode 100644 >> index 000000000000..7ccd48eb2422 >> --- /dev/null >> +++ b/gui/po/Makefile >> @@ -0,0 +1,84 @@ >> +# >> +# Makefile for the PO files (translation) catalog >> +# >> + >> +PREFIX ?= /usr >> + >> +# What is this package? >> +NLSPACKAGE = gui >> +POTFILE = $(NLSPACKAGE).pot >> +INSTALL = /usr/bin/install -c -p >> +INSTALL_DATA = $(INSTALL) -m 644 >> +INSTALL_DIR = /usr/bin/install -d >> + >> +# destination directory >> +INSTALL_NLS_DIR = $(PREFIX)/share/locale >> + >> +# PO catalog handling >> +MSGMERGE = msgmerge >> +MSGMERGE_FLAGS = -q >> +XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) >> +MSGFMT = msgfmt >> + >> +# All possible linguas >> +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) >> + >> +# Only the files matching what the user has set in LINGUAS >> +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) >> + >> +# if no valid LINGUAS, build all languages >> +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) >> + >> +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) >> +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) >> +POTFILES = $(shell cat POTFILES) >> + >> +#default:: clean >> + >> +all:: $(MOFILES) >> + >> +$(POTFILE): $(POTFILES) >> + $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) >> + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ >> + rm -f $(NLSPACKAGE).po; \ >> + else \ >> + mv -f $(NLSPACKAGE).po $(POTFILE); \ >> + fi; \ >> + >> + >> +refresh-po: Makefile >> + for cat in $(POFILES); do \ >> + lang=`basename $$cat .po`; \ >> + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ >> + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ >> + done >> + >> +%.mo: %.po >> + $(MSGFMT) -o $@ $< >> +report: >> + @for cat in $(wildcard *.po); do \ >> + echo -n "$$cat: "; \ >> + msgfmt -v --statistics -o /dev/null $$cat; \ >> + done >> + >> +.PHONY: missing depend >> + >> +relabel: >> + >> +test: >> diff --git a/gui/po/POTFILES b/gui/po/POTFILES >> new file mode 100644 >> index 000000000000..1795c5c1951b >> --- /dev/null >> +++ b/gui/po/POTFILES >> @@ -0,0 +1,17 @@ >> +../booleansPage.py >> +../domainsPage.py >> +../fcontextPage.py >> +../loginsPage.py >> +../modulesPage.py >> +../org.selinux.config.policy >> +../polgengui.py >> +../polgen.ui >> +../portsPage.py >> +../selinux-polgengui.desktop >> +../semanagePage.py >> +../sepolicy.desktop >> +../statusPage.py >> +../system-config-selinux.desktop >> +../system-config-selinux.py >> +../system-config-selinux.ui >> +../usersPage.py >> diff --git a/gui/polgengui.py b/gui/polgengui.py >> index d284ded65279..01f541bafae8 100644 >> --- a/gui/polgengui.py >> +++ b/gui/polgengui.py >> @@ -63,7 +63,7 @@ def get_all_modules(): >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/portsPage.py b/gui/portsPage.py >> index 30f58383bc1d..a537ecc8c0a1 100644 >> --- a/gui/portsPage.py >> +++ b/gui/portsPage.py >> @@ -35,7 +35,7 @@ from semanagePage import * >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/semanagePage.py b/gui/semanagePage.py >> index 4127804fbbee..5361d69c1313 100644 >> --- a/gui/semanagePage.py >> +++ b/gui/semanagePage.py >> @@ -22,7 +22,7 @@ from gi.repository import Gdk, Gtk >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/statusPage.py b/gui/statusPage.py >> index 766854b19cba..a8f079b9b163 100644 >> --- a/gui/statusPage.py >> +++ b/gui/statusPage.py >> @@ -35,7 +35,7 @@ RELABELFILE = "/.autorelabel" >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/system-config-selinux.py b/gui/system-config-selinux.py >> index 3f70122b87e8..8c46c987b974 100644 >> --- a/gui/system-config-selinux.py >> +++ b/gui/system-config-selinux.py >> @@ -45,7 +45,7 @@ import selinux >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/gui/usersPage.py b/gui/usersPage.py >> index 26794ed5c3f3..d15d4c5a71dd 100644 >> --- a/gui/usersPage.py >> +++ b/gui/usersPage.py >> @@ -29,7 +29,7 @@ from semanagePage import * >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-gui" >> try: >> import gettext >> kwargs = {} >> diff --git a/policycoreutils/po/Makefile b/policycoreutils/po/Makefile >> index 575e143122e6..5ff92bff6fdc 100644 >> --- a/policycoreutils/po/Makefile >> +++ b/policycoreutils/po/Makefile >> @@ -3,7 +3,6 @@ >> # >> >> PREFIX ?= /usr >> -TOP = ../.. >> >> # What is this package? >> NLSPACKAGE = policycoreutils >> @@ -32,74 +31,13 @@ USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) >> >> POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) >> MOFILES = $(patsubst %.po,%.mo,$(POFILES)) >> -POTFILES = \ >> - ../run_init/open_init_pty.c \ >> - ../run_init/run_init.c \ >> - ../semodule_link/semodule_link.c \ >> - ../audit2allow/audit2allow \ >> - ../semanage/seobject.py \ >> - ../setsebool/setsebool.c \ >> - ../newrole/newrole.c \ >> - ../load_policy/load_policy.c \ >> - ../sestatus/sestatus.c \ >> - ../semodule/semodule.c \ >> - ../setfiles/setfiles.c \ >> - ../semodule_package/semodule_package.c \ >> - ../semodule_deps/semodule_deps.c \ >> - ../semodule_expand/semodule_expand.c \ >> - ../scripts/chcat \ >> - ../scripts/fixfiles \ >> - ../restorecond/stringslist.c \ >> - ../restorecond/restorecond.h \ >> - ../restorecond/utmpwatcher.h \ >> - ../restorecond/stringslist.h \ >> - ../restorecond/restorecond.c \ >> - ../restorecond/utmpwatcher.c \ >> - ../gui/booleansPage.py \ >> - ../gui/fcontextPage.py \ >> - ../gui/loginsPage.py \ >> - ../gui/mappingsPage.py \ >> - ../gui/modulesPage.py \ >> - ../gui/polgen.glade \ >> - ../gui/polgengui.py \ >> - ../gui/portsPage.py \ >> - ../gui/semanagePage.py \ >> - ../gui/statusPage.py \ >> - ../gui/system-config-selinux.glade \ >> - ../gui/system-config-selinux.py \ >> - ../gui/usersPage.py \ >> - ../secon/secon.c \ >> - booleans.py \ >> - ../sepolicy/sepolicy.py \ >> - ../sepolicy/sepolicy/communicate.py \ >> - ../sepolicy/sepolicy/__init__.py \ >> - ../sepolicy/sepolicy/network.py \ >> - ../sepolicy/sepolicy/generate.py \ >> - ../sepolicy/sepolicy/sepolicy.glade \ >> - ../sepolicy/sepolicy/gui.py \ >> - ../sepolicy/sepolicy/manpage.py \ >> - ../sepolicy/sepolicy/transition.py \ >> - ../sepolicy/sepolicy/templates/executable.py \ >> - ../sepolicy/sepolicy/templates/__init__.py \ >> - ../sepolicy/sepolicy/templates/network.py \ >> - ../sepolicy/sepolicy/templates/rw.py \ >> - ../sepolicy/sepolicy/templates/script.py \ >> - ../sepolicy/sepolicy/templates/semodule.py \ >> - ../sepolicy/sepolicy/templates/tmp.py \ >> - ../sepolicy/sepolicy/templates/user.py \ >> - ../sepolicy/sepolicy/templates/var_lib.py \ >> - ../sepolicy/sepolicy/templates/var_log.py \ >> - ../sepolicy/sepolicy/templates/var_run.py \ >> - ../sepolicy/sepolicy/templates/var_spool.py >> +POTFILES = $(shell cat POTFILES) >> >> #default:: clean >> >> -all:: $(MOFILES) >> +all:: $(POTFILE) $(MOFILES) >> >> -booleans.py: >> - sepolicy booleans -a > booleans.py >> - >> -$(POTFILE): $(POTFILES) booleans.py >> +$(POTFILE): $(POTFILES) >> $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) >> @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ >> rm -f $(NLSPACKAGE).po; \ >> @@ -107,8 +45,6 @@ $(POTFILE): $(POTFILES) booleans.py >> mv -f $(NLSPACKAGE).po $(POTFILE); \ >> fi; \ >> >> -update-po: Makefile $(POTFILE) refresh-po >> - @rm -f booleans.py >> >> refresh-po: Makefile >> for cat in $(POFILES); do \ >> @@ -144,3 +80,5 @@ report: >> .PHONY: missing depend >> >> relabel: >> + >> +test: >> diff --git a/policycoreutils/po/POTFILES b/policycoreutils/po/POTFILES >> new file mode 100644 >> index 000000000000..12237dc61ee4 >> --- /dev/null >> +++ b/policycoreutils/po/POTFILES >> @@ -0,0 +1,9 @@ >> +../run_init/open_init_pty.c >> +../run_init/run_init.c >> +../setsebool/setsebool.c >> +../newrole/newrole.c >> +../load_policy/load_policy.c >> +../sestatus/sestatus.c >> +../semodule/semodule.c >> +../setfiles/setfiles.c >> +../secon/secon.c >> diff --git a/python/Makefile b/python/Makefile >> index 9b66d52fbd4d..00312dbdb5c6 100644 >> --- a/python/Makefile >> +++ b/python/Makefile >> @@ -1,4 +1,4 @@ >> -SUBDIRS = sepolicy audit2allow semanage sepolgen chcat >> +SUBDIRS = sepolicy audit2allow semanage sepolgen chcat po >> >> all install relabel clean indent test: >> @for subdir in $(SUBDIRS); do \ >> diff --git a/python/chcat/chcat b/python/chcat/chcat >> index fdd2e46ee3f9..839ddd3b54b6 100755 >> --- a/python/chcat/chcat >> +++ b/python/chcat/chcat >> @@ -30,7 +30,7 @@ import getopt >> import selinux >> import seobject >> >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-python" >> try: >> import gettext >> kwargs = {} >> diff --git a/python/po/Makefile b/python/po/Makefile >> new file mode 100644 >> index 000000000000..05e49f0cc274 >> --- /dev/null >> +++ b/python/po/Makefile >> @@ -0,0 +1,85 @@ >> +# >> +# Makefile for the PO files (translation) catalog >> +# >> + >> +PREFIX ?= /usr >> + >> +# What is this package? >> +NLSPACKAGE = python >> +POTFILE = $(NLSPACKAGE).pot >> +INSTALL = /usr/bin/install -c -p >> +INSTALL_DATA = $(INSTALL) -m 644 >> +INSTALL_DIR = /usr/bin/install -d >> + >> +# destination directory >> +INSTALL_NLS_DIR = $(PREFIX)/share/locale >> + >> +# PO catalog handling >> +MSGMERGE = msgmerge >> +MSGMERGE_FLAGS = -q >> +XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) >> +MSGFMT = msgfmt >> + >> +# All possible linguas >> +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) >> + >> +# Only the files matching what the user has set in LINGUAS >> +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) >> + >> +# if no valid LINGUAS, build all languages >> +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) >> + >> +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) >> +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) >> +POTFILES = $(shell cat POTFILES) >> + >> +#default:: clean >> + >> +all:: $(MOFILES) >> + >> +$(POTFILE): $(POTFILES) > > Extra space at the end of the line above. > >> + $(XGETTEXT) -L Python --keyword=_ --keyword=N_ $(POTFILES) >> + $(XGETTEXT) -j --keyword=_ --keyword=N_ ../sepolicy/sepolicy/sepolicy.glade >> + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ >> + rm -f $(NLSPACKAGE).po; \ >> + else \ >> + mv -f $(NLSPACKAGE).po $(POTFILE); \ >> + fi; \ >> + >> + >> +refresh-po: Makefile >> + for cat in $(POFILES); do \ >> + lang=`basename $$cat .po`; \ >> + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ >> + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ >> + done >> + >> +%.mo: %.po >> + $(MSGFMT) -o $@ $< >> +report: >> + @for cat in $(wildcard *.po); do \ >> + echo -n "$$cat: "; \ >> + msgfmt -v --statistics -o /dev/null $$cat; \ >> + done >> + >> +.PHONY: missing depend >> + >> +relabel: >> + >> +test: >> diff --git a/python/po/POTFILES b/python/po/POTFILES >> new file mode 100644 >> index 000000000000..128eb870a69e >> --- /dev/null >> +++ b/python/po/POTFILES >> @@ -0,0 +1,10 @@ >> +../audit2allow/audit2allow >> +../chcat/chcat >> +../semanage/semanage >> +../semanage/seobject.py >> +../sepolgen/src/sepolgen/interfaces.py >> +../sepolicy/sepolicy/generate.py >> +../sepolicy/sepolicy/gui.py >> +../sepolicy/sepolicy/__init__.py >> +../sepolicy/sepolicy/interface.py >> +../sepolicy/sepolicy.py >> diff --git a/python/semanage/semanage b/python/semanage/semanage >> index ff9fb66b1411..12bb159ef649 100644 >> --- a/python/semanage/semanage >> +++ b/python/semanage/semanage >> @@ -30,7 +30,7 @@ import seobject >> import sys >> import traceback >> >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-python" >> try: >> import gettext >> kwargs = {} >> diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py >> index 21adbf6eb74f..69e60db80060 100644 >> --- a/python/semanage/seobject.py >> +++ b/python/semanage/seobject.py >> @@ -29,7 +29,7 @@ import sys >> import stat >> import socket >> from semanage import * >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-python" >> import sepolicy >> from setools.policyrep import SELinuxPolicy >> from setools.typequery import TypeQuery >> diff --git a/python/sepolgen/src/sepolgen/sepolgeni18n.py b/python/sepolgen/src/sepolgen/sepolgeni18n.py >> index 998c4356415c..56ebd807c69c 100644 >> --- a/python/sepolgen/src/sepolgen/sepolgeni18n.py >> +++ b/python/sepolgen/src/sepolgen/sepolgeni18n.py >> @@ -19,7 +19,7 @@ >> >> try: >> import gettext >> - t = gettext.translation( 'yumex' ) >> + t = gettext.translation( 'selinux-python' ) >> _ = t.gettext >> except: >> def _(str): >> diff --git a/python/sepolicy/sepolicy.py b/python/sepolicy/sepolicy.py >> index 7b2230651099..32956e58f52e 100755 >> --- a/python/sepolicy/sepolicy.py >> +++ b/python/sepolicy/sepolicy.py >> @@ -28,7 +28,7 @@ import sepolicy >> from multiprocessing import Pool >> from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text >> import argparse >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-python" >> try: >> import gettext >> kwargs = {} >> diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py >> index e8654abbceb3..203ca25f4210 100644 >> --- a/python/sepolicy/sepolicy/__init__.py >> +++ b/python/sepolicy/sepolicy/__init__.py >> @@ -23,7 +23,7 @@ from setools.typeattrquery import TypeAttributeQuery >> from setools.typequery import TypeQuery >> from setools.userquery import UserQuery >> >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-python" >> try: >> import gettext >> kwargs = {} >> diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py >> index 4e1ed4e9dc31..43180ca6fda4 100644 >> --- a/python/sepolicy/sepolicy/generate.py >> +++ b/python/sepolicy/sepolicy/generate.py >> @@ -48,7 +48,7 @@ import sepolgen.defaults as defaults >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-python" >> try: >> import gettext >> kwargs = {} >> diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py >> index 1e86422b864a..c9ca158ddd09 100644 >> --- a/python/sepolicy/sepolicy/gui.py >> +++ b/python/sepolicy/sepolicy/gui.py >> @@ -41,7 +41,7 @@ import os >> import re >> import unicodedata >> >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-python" >> try: >> import gettext >> kwargs = {} >> diff --git a/python/sepolicy/sepolicy/interface.py b/python/sepolicy/sepolicy/interface.py >> index bdffb770f364..9d40aea1498d 100644 >> --- a/python/sepolicy/sepolicy/interface.py >> +++ b/python/sepolicy/sepolicy/interface.py >> @@ -30,7 +30,7 @@ __all__ = ['get_all_interfaces', 'get_interfaces_from_xml', 'get_admin', 'get_us >> ## >> ## I18N >> ## >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-python" >> try: >> import gettext >> kwargs = {} >> diff --git a/sandbox/Makefile b/sandbox/Makefile >> index 9da5e58db9e6..84cb5a39bf7e 100644 >> --- a/sandbox/Makefile >> +++ b/sandbox/Makefile >> @@ -13,6 +13,7 @@ override LDLIBS += -lselinux -lcap-ng >> SEUNSHARE_OBJS = seunshare.o >> >> all: sandbox seunshare sandboxX.sh start >> + (cd po && $(MAKE) $@) >> >> seunshare: $(SEUNSHARE_OBJS) >> >> @@ -39,12 +40,14 @@ install: all >> install -m 755 start $(DESTDIR)$(SHAREDIR) >> -mkdir -p $(DESTDIR)$(SYSCONFDIR) >> install -m 644 sandbox.conf $(DESTDIR)$(SYSCONFDIR)/sandbox >> + (cd po && $(MAKE) $@) >> >> test: >> @$(PYTHON) test_sandbox.py -v >> >> clean: >> -rm -f seunshare *.o *~ >> + (cd po && $(MAKE) $@) >> >> indent: >> ../../scripts/Lindent $(wildcard *.[ch]) >> diff --git a/sandbox/po/Makefile b/sandbox/po/Makefile >> new file mode 100644 >> index 000000000000..e75343649b67 >> --- /dev/null >> +++ b/sandbox/po/Makefile >> @@ -0,0 +1,84 @@ >> +# >> +# Makefile for the PO files (translation) catalog >> +# >> + >> +PREFIX ?= /usr >> + >> +# What is this package? >> +NLSPACKAGE = sandbox >> +POTFILE = $(NLSPACKAGE).pot >> +INSTALL = /usr/bin/install -c -p >> +INSTALL_DATA = $(INSTALL) -m 644 >> +INSTALL_DIR = /usr/bin/install -d >> + >> +# destination directory >> +INSTALL_NLS_DIR = $(PREFIX)/share/locale >> + >> +# PO catalog handling >> +MSGMERGE = msgmerge >> +MSGMERGE_FLAGS = -q >> +XGETTEXT = xgettext -L Python --default-domain=$(NLSPACKAGE) >> +MSGFMT = msgfmt >> + >> +# All possible linguas >> +PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) >> + >> +# Only the files matching what the user has set in LINGUAS >> +USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) >> + >> +# if no valid LINGUAS, build all languages >> +USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) >> + >> +POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) >> +MOFILES = $(patsubst %.po,%.mo,$(POFILES)) >> +POTFILES = $(shell cat POTFILES) >> + >> +#default:: clean >> + >> +all:: $(POTFILE) $(MOFILES) >> + >> +$(POTFILE): $(POTFILES) >> + $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) >> + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ >> + rm -f $(NLSPACKAGE).po; \ >> + else \ >> + mv -f $(NLSPACKAGE).po $(POTFILE); \ >> + fi; \ >> + >> + >> +refresh-po: Makefile >> + for cat in $(POFILES); do \ >> + lang=`basename $$cat .po`; \ >> + if $(MSGMERGE) $(MSGMERGE_FLAGS) $$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) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ >> + $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ >> + done >> + >> +%.mo: %.po >> + $(MSGFMT) -o $@ $< >> +report: >> + @for cat in $(wildcard *.po); do \ >> + echo -n "$$cat: "; \ >> + msgfmt -v --statistics -o /dev/null $$cat; \ >> + done >> + >> +.PHONY: missing depend >> + >> +relabel: >> + >> +test: >> diff --git a/sandbox/po/POTFILES b/sandbox/po/POTFILES >> new file mode 100644 >> index 000000000000..deff3f2f4656 >> --- /dev/null >> +++ b/sandbox/po/POTFILES >> @@ -0,0 +1 @@ >> +../sandbox >> diff --git a/sandbox/sandbox b/sandbox/sandbox >> index ca5f1e030a51..16c43b51eaaa 100644 >> --- a/sandbox/sandbox >> +++ b/sandbox/sandbox >> @@ -37,7 +37,7 @@ import sepolicy >> >> SEUNSHARE = "/usr/sbin/seunshare" >> SANDBOXSH = "/usr/share/sandbox/sandboxX.sh" >> -PROGNAME = "policycoreutils" >> +PROGNAME = "selinux-sandbox" >> try: >> import gettext >> kwargs = {} >> -- >> 2.35.1 >> ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-04-06 14:03 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-04-01 9:57 Translate or not? Petr Lautrbach 2022-04-01 9:57 ` [PATCH] Split po/ translation files into the relevant sub-directories Petr Lautrbach 2022-04-04 21:08 ` James Carter 2022-04-06 9:32 ` Petr Lautrbach
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.