| 1 | # This source code is released in public domain. |
| 2 | |
| 3 | # Author Tomas Stary (2016) <tomichec@gmail.com> |
| 4 | # Thanks for helpful discussion to Thérèse Godefroy |
| 5 | |
| 6 | # This is a Makefile to generate the PO files for automated |
| 7 | # translation. If you get through the trouble of creating PO file for |
| 8 | # your language, you will save a lot of hassles with editing plain html |
| 9 | # and repeated text, which also implies potential mistakes. |
| 10 | |
| 11 | # Please read the manual on the page: |
| 12 | # http://dev.man-online.org/man7/po4a/ |
| 13 | |
| 14 | # This Makefile only contains commands from the manual tested for the |
| 15 | # esd translation. |
| 16 | |
| 17 | # After the translation of the PO file has been finished, generate new |
| 18 | # files using: make -f Makefile.gen |
| 19 | |
| 20 | # flags for the po4a-getextize |
| 21 | PO4A_FLAGS=-M utf-8 -f xhtml -o porefs=none \ |
| 22 | -o 'untranslated=<script>' \ |
| 23 | -o 'attributes=<meta>content' \ |
| 24 | |
| 25 | # list of source files for the translation |
| 26 | SRC=confirmation.html\ |
| 27 | index.html\ |
| 28 | infographic.html\ |
| 29 | mac.html\ |
| 30 | next_steps.html\ |
| 31 | windows.html\ |
| 32 | workshops.html |
| 33 | |
| 34 | ############################################################ |
| 35 | # initialise the po template from English version, this is to be used, |
| 36 | # there is no translation for now, and you are going to build it from |
| 37 | # scratch. Then copy the file esd-temp.pot to your language file |
| 38 | # esd-$(lang).po such as esd-cs.po, and edit it in your favourite PO |
| 39 | # editor (such as poedit, or emacs with po-mode). |
| 40 | |
| 41 | # If you already have an old translation you can convert it to PO |
| 42 | # files as described bellow. |
| 43 | esd-temp.pot: $(foreach f,$(SRC),en/$f) |
| 44 | po4a-gettextize $(PO4A_FLAGS) $(foreach f,$+,-m $f) -p $@ |
| 45 | |
| 46 | ############################################################ |
| 47 | # Convert existing translations into PO files. |
| 48 | |
| 49 | # NOTE: You need to make sure that your translated document is formaly |
| 50 | # correct xhtml (there might be accidental mistakes). |
| 51 | # Validate your document to find errors (e.g. https://validator.w3.org) |
| 52 | |
| 53 | # IMPORTANT: when you generate the PO files from the existing |
| 54 | # translation, the original files in the version *corresponding* to |
| 55 | # the translation have to be provided as a command line argument (with |
| 56 | # parameter -m). |
| 57 | |
| 58 | # for that specify the directory where the original files are placed |
| 59 | DIR=en |
| 60 | # and the list of files that were translated within the corresponding |
| 61 | # version |
| 62 | FILES=$(SRC) |
| 63 | |
| 64 | # The generation of the PO file is likely to go wrong, because of the |
| 65 | # mistakes which were introduced by the direct translation of the html |
| 66 | # files. In this case the po4a gives quite good error message with a |
| 67 | # reference in which file and line number to look at to find the |
| 68 | # mistake. Go to that file and try to correct the errors and then |
| 69 | # repeat the procedure. |
| 70 | |
| 71 | # Don't give up. Translating PO files is nicer. |
| 72 | |
| 73 | # For more details and troubleshooting see: |
| 74 | # https://po4a.org/man/man7/po4a.7.php |
| 75 | # in section: HOWTO convert a pre-existing translation to po4a? |
| 76 | esd-%.po.extract: $(foreach d,$(DIR) %,$(foreach f,$(FILES),$d/$f)) |
| 77 | po4a-gettextize $(PO4A_FLAGS) $(foreach f,$(FILES),-m $(DIR)/$f) $(foreach f,$(FILES),-l $*/$f) -p $@ |
| 78 | cp $@ `basename -s .extract $@` |
| 79 | |
| 80 | ############################################################ |
| 81 | # update the PO translation after the original has changed. This will |
| 82 | # make a new PO file automaticaly reusing identical translations, but |
| 83 | # the strings will be made fuzzy and need to verified manualy. Strings |
| 84 | # that changed need to be translated again. |
| 85 | esd-%.po.update: esd-%.po $(foreach f,$(SRC),en/$f) |
| 86 | cp $< $@ |
| 87 | po4a-updatepo $(PO4A_FLAGS) $(foreach f,$(SRC),-m en/$f) -p $@; \ |
| 88 | ./gnun-add-fuzzy-diff $@ > $< |
| 89 | |
| 90 | # gnun-add-fuzzy-diff (from the GNUN package) is very useful to locate |
| 91 | # a change within a string. |