• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Convenient makefile for managing translations.
2
3# Prerequisites:
4# - GNU gettext
5# - Python
6
7# Adding new translations
8# -----------------------
9
10# To start working on a new translation edit the POS=... line
11# below. If you want to add for example a french translation, add
12# fr.po.
13
14# Then run "make po" to generate a fresh .po file from translatable
15# strings in t_options.h. Now you can edit the new .po file (fr.po in
16# the example above) to translate the strings. Please make sure that
17# your editor encodes the file in UTF-8.
18
19# Updating existing translations
20# ------------------------------
21
22# Run "make po" to update .po files with new translatable strings from
23# t_options.h. Now you can edit the .po files you're interested
24# in. Please make sure that your editor encodes the file in UTF-8.
25
26# Updating options.h
27# ------------------
28
29# Finally run "make" to generate options.h from t_options.h with all
30# translations. Now you can rebuild the drivers. Any common options
31# used by the drivers will have option descriptions with the latest
32# translations.
33
34# Publishing translations
35# -----------------------
36
37# To get your translation(s) into Mesa CVS, please send me your
38# <lang>.po file.
39
40# More information:
41# - info gettext
42
43# The set of supported languages. Add languages as needed.
44POS=ca.po de.po es.po nl.po fr.po sv.po
45
46#
47# Don't change anything below, unless you know what you're doing.
48#
49LANGS=$(POS:%.po=%)
50MOS=$(POS:%.po=%/LC_MESSAGES/options.mo)
51POT=xmlpool.pot
52
53.PHONY: all clean pot po mo
54
55EXTRA_DIST = \
56	gen_xmlpool.py \
57	options.h \
58	t_options.h \
59	$(POS) \
60	$(MOS) \
61	SConscript \
62	meson.build
63
64BUILT_SOURCES = options.h
65CLEANFILES = \
66	options.h
67	$(POS) \
68	$(MOS)
69
70# Default target options.h
71LOCALEDIR := .
72options.h: t_options.h $(MOS)
73	$(AM_V_GEN) $(PYTHON2) $(PYTHON_FLAGS) $(srcdir)/gen_xmlpool.py $(srcdir)/t_options.h $(LOCALEDIR) $(LANGS) > options.h
74
75# Update .mo files from the corresponding .po files.
76%/LC_MESSAGES/options.mo: %.po
77	@mo="$@"; \
78	lang=$${mo%%/*}; \
79	echo "Updating ($$lang) $@ from $?."; \
80	$(MKDIR_P) $$lang/LC_MESSAGES; \
81	msgfmt -o $@ $?
82
83# Use this target to create or update .po files with new messages in
84# driconf.py.
85po: $(POT)
86	@for po in $(POS); do \
87		if [ -f $$po ]; then \
88			echo "Merging new strings from $(POT) into $@."; \
89			mv $$po $$po~; \
90			msgmerge -o $$po $$po~ $(POT); \
91		else \
92			echo "Initializing $$po from $(POT)."; \
93			msginit -i $(POT) -o $$po~ --locale=$*; \
94			sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $$po~ > $$po; \
95		fi \
96	done
97
98pot: $(POT)
99
100# Extract message catalog from driconf.py.
101$(POT): t_options.h
102	xgettext -L C --from-code utf-8 -o $(POT) t_options.h
103