Skip to content

Commit

Permalink
Sync translation infrastructure from foreman_plugin_template (#11193)
Browse files Browse the repository at this point in the history
This copies the Makefile from foreman_plugin_template to resolve an
issue with the time stamp handling and pulling in new translations that
made it past 50%.

It also ignores action_names.rb since that's now considered a best
practice. Generated files do not belong in git.
  • Loading branch information
ekohl authored Jan 8, 2025
1 parent f649253 commit 2607abb
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 205 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ locale/*/*.po.time_stamp
locale/.cache/*
locale/*/*.pox
locale/*/LC_MESSAGES
locale/action_names.rb
.yardoc
yardoc
doc/apidoc*
Expand Down
44 changes: 20 additions & 24 deletions locale/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,19 @@
# make tx-update - download and merge translations from Transifex
# make clean - clean everything
#
DOMAIN = katello
VERSION = $(shell git describe --abbrev=0 --tags)
DOMAIN = $(shell ruby -rrubygems -e 'puts Gem::Specification::load(Dir.glob("../*.gemspec")[0]).name')
VERSION = $(shell ruby -rrubygems -e 'puts Gem::Specification::load(Dir.glob("../*.gemspec")[0]).version')
POTFILE = $(DOMAIN).pot
MOFILE = $(DOMAIN).mo
ACTIONFILE = action_names.rb
POFILES = $(shell find . -name '$(DOMAIN).po')
MOFILES = $(patsubst %.po,%.mo,$(POFILES))
POXFILES = $(patsubst %.po,%.pox,$(POFILES))
EDITFILES = $(patsubst %.po,%.edit.po,$(POFILES))
JSFILES = $(shell find ../app/assets/javascripts/*/locale -name '$(DOMAIN).js')

%.mo: %.po
mkdir -p $(shell dirname $@)/LC_MESSAGES
msgfmt -o $(shell dirname $@)/LC_MESSAGES/$(MOFILE) $<
touch $(shell dirname $@)/LC_MESSAGES/$(MOFILE)

# Generate MO files from PO files
all-mo: $(MOFILES)
Expand All @@ -32,9 +31,16 @@ all-mo: $(MOFILES)
cat $@
! grep -q msgid $@

%.edit.po:
%.edit.po: %.po.time_stamp
touch $@

# gettext will trash the .edit.po file if the time stamp doesn't exist or is older than the po file
%.po.time_stamp: %.po
touch --reference $< $@

# Prevent make from treating this as an intermediate file to be cleaned up
.PRECIOUS: %.po.time_stamp

check: $(POXFILES)

# Unify duplicate translations
Expand All @@ -44,34 +50,24 @@ uniq-po:
done

tx-pull: $(EDITFILES)
tx pull -f
# Initialize new languages
cd .. && tx pull -f --all --minimum-perc 50
# Force update all existing languages
cd .. && tx pull -f --minimum-perc 0
for f in $(EDITFILES) ; do \
sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
done

tx-update: tx-pull
@echo
@echo Run rake plugin:gettext[$(DOMAIN)] and rake plugin:po_to_json[$(DOMAIN)] from the Foreman installation, then make -C locale po-files to finish
@echo Run rake plugin:gettext[$(DOMAIN)] from the Foreman installation
@echo then run rake plugin:po_to_json[$(DOMAIN)] from the Foreman installation
@echo then run make -C locale mo-files to finish
@echo

commit-translation-files: $(POFILES)
git add $(POFILES) $(POTFILE) $(ACTIONFILE) ../app/assets/javascripts/katello/locale
mo-files: $(MOFILES)
git add $(POFILES) $(POTFILE) $(JSFILES) ../locale/*/LC_MESSAGES
git commit -m "i18n - pulling from tx"
@echo
@echo Changes commited!
@echo

# Workaround when rake task fails (https://github.com/ruby/rake/pull/182)
extract:
rxgettext \
--sort-output \
--sort-by-msgid \
--no-wrap \
--no-location \
-o ${DOMAIN}.pot \
--package-name=${DOMAIN} \
--package-version="${VERSION}" \
[email protected] \
--copyright-holder="Foreman developers" \
--copyright-year=$(shell date +%Y) \
$(shell find ../app -type f -name \*.rb -o -name \*.erb)
181 changes: 0 additions & 181 deletions locale/action_names.rb

This file was deleted.

0 comments on commit 2607abb

Please sign in to comment.