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