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. 44 POS=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 # 49 LANGS=$(POS:%.po=%) 50 MOS=$(POS:%.po=%/LC_MESSAGES/options.mo) 51 POT=xmlpool.pot 52 53 .PHONY: all clean pot po mo 54 55 all: options.h 56 57 # Only intermediate files are cleaned up. options.h is not deleted because 58 # it's in CVS. 59 clean: 60 -rm -f $(POT) *~ 61 -rm -rf $(LANGS) 62 63 # Default target options.h 64 options.h: t_options.h mo 65 $(PYTHON2) $(PYTHON_FLAGS) gen_xmlpool.py $(LANGS) > options.h 66 67 # Update .mo files from the corresponding .po files. 68 mo: 69 @for mo in $(MOS); do \ 70 lang=$${mo%%/*}; \ 71 echo "Updating $$mo from $$lang.po."; \ 72 mkdir -p $${mo%/*}; \ 73 msgfmt -o $$mo $$lang.po; \ 74 done 75 76 # Use this target to create or update .po files with new messages in 77 # driconf.py. 78 po: $(POS) 79 80 pot: $(POT) 81 82 # Extract message catalog from driconf.py. 83 $(POT): t_options.h 84 xgettext -L C --from-code utf-8 -o $(POT) t_options.h 85 86 # Create or update a .po file for a specific language. 87 %.po: $(POT) 88 @if [ -f $@ ]; then \ 89 echo "Merging new strings from $(POT) into $@."; \ 90 mv $@ $@~; \ 91 msgmerge -o $@ $@~ $(POT); \ 92 else \ 93 echo "Initializing $@ from $(POT)."; \ 94 msginit -i $(POT) -o $@~ --locale=$*; \ 95 sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $@~ > $@; \ 96 fi 97