xref: /vim-8.2.3635/src/po/Makefile (revision fa57335e)
1071d4279SBram Moolenaar# Makefile for the Vim message translations.
2071d4279SBram Moolenaar
3e639eb44SBram Moolenaar# Include stuff found by configure.
4e639eb44SBram Moolenaarinclude ../auto/config.mk
5e639eb44SBram Moolenaar
6a4a2934eSBram Moolenaar# get LANGUAGES, MOFILES, MOCONVERTED and CHECKFILES
7a4a2934eSBram Moolenaarinclude Make_all.mak
8a4a2934eSBram Moolenaar
9071d4279SBram Moolenaar# Note: ja.sjis, *.cp1250 and zh_CN.cp936 are only for MS-Windows, they are
10071d4279SBram Moolenaar# not installed on Unix
11071d4279SBram Moolenaar
12071d4279SBram MoolenaarPACKAGE = vim
13071d4279SBram MoolenaarSHELL = /bin/sh
1458d98234SBram MoolenaarVIM = ../vim
15071d4279SBram Moolenaar
16071d4279SBram Moolenaar# The OLD_PO_FILE_INPUT and OLD_PO_FILE_OUTPUT are for the new GNU gettext
17071d4279SBram Moolenaar# tools 0.10.37, which use a slightly different .po file format that is not
18071d4279SBram Moolenaar# compatible with Solaris (and old gettext implementations) unless these are
19071d4279SBram Moolenaar# set.  gettext 0.10.36 will not work!
20e639eb44SBram MoolenaarMSGFMTCMD = OLD_PO_FILE_INPUT=yes $(MSGFMT) -v
21071d4279SBram MoolenaarXGETTEXT = OLD_PO_FILE_INPUT=yes OLD_PO_FILE_OUTPUT=yes xgettext
22071d4279SBram MoolenaarMSGMERGE = OLD_PO_FILE_INPUT=yes OLD_PO_FILE_OUTPUT=yes msgmerge
23071d4279SBram Moolenaar
24071d4279SBram Moolenaar.SUFFIXES:
2558d98234SBram Moolenaar.SUFFIXES: .po .mo .pot .ck
26a4a2934eSBram Moolenaar.PHONY: all install uninstall prefixcheck converted check clean checkclean distclean update-po $(LANGUAGES)
27071d4279SBram Moolenaar
28071d4279SBram Moolenaar.po.mo:
29e639eb44SBram Moolenaar	$(MSGFMTCMD) -o $@ $<
30071d4279SBram Moolenaar
3158d98234SBram Moolenaar.po.ck:
3228c37959SBram Moolenaar	$(VIM) -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq $<
3358d98234SBram Moolenaar	touch $@
3458d98234SBram Moolenaar
3526096cc9SBram Moolenaarall: $(MOFILES) $(MOCONVERTED) $(MSGFMT_DESKTOP)
36071d4279SBram Moolenaar
3758d98234SBram Moolenaarcheck: $(CHECKFILES)
3858d98234SBram Moolenaar
390b39c3fdSBram Moolenaar# installing for real
40c4fba6f8SBram Moolenaarinstall: $(MOFILES) $(MOCONVERTED)
4158d98234SBram Moolenaar	@$(MAKE) prefixcheck
42a4a2934eSBram Moolenaar	for lang in $(LANGUAGES); do \
43071d4279SBram Moolenaar	  dir=$(LOCALEDIR)/$$lang/; \
44071d4279SBram Moolenaar	  if test ! -x "$$dir"; then \
45071d4279SBram Moolenaar	    mkdir $$dir; chmod 755 $$dir; \
46071d4279SBram Moolenaar	  fi; \
47071d4279SBram Moolenaar	  dir=$(LOCALEDIR)/$$lang/LC_MESSAGES; \
48071d4279SBram Moolenaar	  if test ! -x "$$dir"; then \
49071d4279SBram Moolenaar	    mkdir $$dir; chmod 755 $$dir; \
50071d4279SBram Moolenaar	  fi; \
51071d4279SBram Moolenaar	  if test -r $$lang.mo; then \
52071d4279SBram Moolenaar	    $(INSTALL_DATA) $$lang.mo $$dir/$(PACKAGE).mo; \
53071d4279SBram Moolenaar	    chmod $(FILEMOD) $$dir/$(PACKAGE).mo; \
54071d4279SBram Moolenaar	  fi; \
55071d4279SBram Moolenaar	done
56071d4279SBram Moolenaar
57071d4279SBram Moolenaaruninstall:
5858d98234SBram Moolenaar	@$(MAKE) prefixcheck
59c4fba6f8SBram Moolenaar	for cat in $(MOFILES) $(MOCONVERTED); do \
60071d4279SBram Moolenaar	  cat=`basename $$cat`; \
61071d4279SBram Moolenaar	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
62071d4279SBram Moolenaar	  rm -f $(LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
63071d4279SBram Moolenaar	done
64071d4279SBram Moolenaar
650b39c3fdSBram Moolenaar# installing for local tryout into ../../runtime/lang
660b39c3fdSBram Moolenaartryoutinstall: $(MOFILES) $(MOCONVERTED)
670b39c3fdSBram Moolenaar	@$(MAKE) prefixcheck
680b39c3fdSBram Moolenaar	for lang in $(LANGUAGES); do \
690b39c3fdSBram Moolenaar	  dir=../../runtime/lang/$$lang/; \
700b39c3fdSBram Moolenaar	  if test ! -x "$$dir"; then \
710b39c3fdSBram Moolenaar	    mkdir $$dir; chmod 755 $$dir; \
720b39c3fdSBram Moolenaar	  fi; \
730b39c3fdSBram Moolenaar	  dir=../../runtime/lang/$$lang/LC_MESSAGES; \
740b39c3fdSBram Moolenaar	  if test ! -x "$$dir"; then \
750b39c3fdSBram Moolenaar	    mkdir $$dir; chmod 755 $$dir; \
760b39c3fdSBram Moolenaar	  fi; \
770b39c3fdSBram Moolenaar	  if test -r $$lang.mo; then \
780b39c3fdSBram Moolenaar	    cp $$lang.mo $$dir/$(PACKAGE).mo; \
790b39c3fdSBram Moolenaar	    chmod 644 $$dir/$(PACKAGE).mo; \
800b39c3fdSBram Moolenaar	  fi; \
810b39c3fdSBram Moolenaar	done
820b39c3fdSBram Moolenaar
83c4fba6f8SBram Moolenaarconverted: $(MOCONVERTED)
84071d4279SBram Moolenaar
8502938a97SBram Moolenaar# nl.po was added later, if it does not exist use a file with just a # in it
8602938a97SBram Moolenaar# (an empty file doesn't work with old msgfmt).
878d616172SBram Moolenaarnl.po:
8802938a97SBram Moolenaar	@( echo \# > nl.po )
898d616172SBram Moolenaar
9028c37959SBram Moolenaar# Norwegian/Bokmal: "nb" is an alias for "no".
9128c37959SBram Moolenaar# Copying the file is not efficient, but I don't know of another way to make
9228c37959SBram Moolenaar# this work.
9328c37959SBram Moolenaarnb.po: no.po
9428c37959SBram Moolenaar	cp no.po nb.po
9528c37959SBram Moolenaar
96071d4279SBram Moolenaar# Convert ja.po to create ja.sjis.po.  Requires doubling backslashes in the
97071d4279SBram Moolenaar# second byte.  Don't depend on sjiscorr, it should only be compiled when
98071d4279SBram Moolenaar# ja.sjis.po is outdated.
99071d4279SBram Moolenaarja.sjis.po: ja.po
100071d4279SBram Moolenaar	@$(MAKE) sjiscorr
101071d4279SBram Moolenaar	rm -f ja.sjis.po
102e6ae6225SBram Moolenaar	iconv -f utf-8 -t cp932 ja.po | ./sjiscorr > ja.sjis.po
103071d4279SBram Moolenaar
104071d4279SBram Moolenaarsjiscorr: sjiscorr.c
105071d4279SBram Moolenaar	$(CC) -o sjiscorr sjiscorr.c
106071d4279SBram Moolenaar
107e6ae6225SBram Moolenaarja.euc-jp.po: ja.po
108e6ae6225SBram Moolenaar	iconv -f utf-8 -t euc-jp ja.po | \
109d1d037e9SBram Moolenaar		sed -e 's/charset=[uU][tT][fF]-8/charset=euc-jp/' -e 's/# Original translations/# Generated from ja.po, DO NOT EDIT/' > ja.euc-jp.po
110e6ae6225SBram Moolenaar
111071d4279SBram Moolenaar# Convert cs.po to create cs.cp1250.po.
112071d4279SBram Moolenaarcs.cp1250.po: cs.po
113071d4279SBram Moolenaar	rm -f cs.cp1250.po
114071d4279SBram Moolenaar	iconv -f iso-8859-2 -t cp1250 cs.po | \
115071d4279SBram Moolenaar		sed -e 's/charset=ISO-8859-2/charset=cp1250/' -e 's/# Original translations/# Generated from cs.po, DO NOT EDIT/' > cs.cp1250.po
116071d4279SBram Moolenaar
117071d4279SBram Moolenaar# Convert pl.po to create pl.cp1250.po.
118071d4279SBram Moolenaarpl.cp1250.po: pl.po
119071d4279SBram Moolenaar	rm -f pl.cp1250.po
120071d4279SBram Moolenaar	iconv -f iso-8859-2 -t cp1250 pl.po | \
121071d4279SBram Moolenaar		sed -e 's/charset=ISO-8859-2/charset=cp1250/' -e 's/# Original translations/# Generated from pl.po, DO NOT EDIT/' > pl.cp1250.po
122071d4279SBram Moolenaar
123910f66f9SBram Moolenaar# Convert pl.po to create pl.UTF-8.po.
124910f66f9SBram Moolenaarpl.UTF-8.po: pl.po
125910f66f9SBram Moolenaar	rm -f pl.UTF-8.po
126910f66f9SBram Moolenaar	iconv -f iso-8859-2 -t utf-8 pl.po | \
127d1d037e9SBram Moolenaar		sed -e 's/charset=ISO-8859-2/charset=UTF-8/' -e 's/# Original translations/# Generated from pl.po, DO NOT EDIT/' > pl.UTF-8.po
128910f66f9SBram Moolenaar
129071d4279SBram Moolenaar# Convert sk.po to create sk.cp1250.po.
130071d4279SBram Moolenaarsk.cp1250.po: sk.po
131071d4279SBram Moolenaar	rm -f sk.cp1250.po
132071d4279SBram Moolenaar	iconv -f iso-8859-2 -t cp1250 sk.po | \
133071d4279SBram Moolenaar		sed -e 's/charset=ISO-8859-2/charset=cp1250/' -e 's/# Original translations/# Generated from sk.po, DO NOT EDIT/' > sk.cp1250.po
134071d4279SBram Moolenaar
13516038d50SBram Moolenaar# Convert zh_CN.UTF-8.po to create zh_CN.cp936.po.
13616038d50SBram Moolenaar# Set 'charset' to gbk to avoid that msfmt generates a warning.
13716038d50SBram Moolenaar# This used to convert from zh_CN.po, but that results in a conversion error.
13816038d50SBram Moolenaarzh_CN.cp936.po: zh_CN.UTF-8.po
139071d4279SBram Moolenaar	rm -f zh_CN.cp936.po
14016038d50SBram Moolenaar	iconv -f UTF-8 -t cp936 zh_CN.UTF-8.po | \
141d1d037e9SBram Moolenaar		sed -e 's/charset=[uU][tT][fF]-8/charset=gbk/' -e 's/# Original translations/# Generated from zh_CN.UTF-8.po, DO NOT EDIT/' > zh_CN.cp936.po
142071d4279SBram Moolenaar
1435e3dae8bSBram Moolenaar# Convert ko.UTF-8.po to create ko.po.
1445e3dae8bSBram Moolenaarko.po: ko.UTF-8.po
1455e3dae8bSBram Moolenaar	rm -f ko.po
1465e3dae8bSBram Moolenaar	iconv -f UTF-8 -t euc-kr ko.UTF-8.po | \
1475e3dae8bSBram Moolenaar		sed -e 's/charset=UTF-8/charset=euc-kr/' \
1485e3dae8bSBram Moolenaar		    -e 's/# Korean translation for Vim/# Generated from ko.UTF-8.po, DO NOT EDIT/' \
1495e3dae8bSBram Moolenaar		    > ko.po
1505e3dae8bSBram Moolenaar
151071d4279SBram Moolenaar# Convert ru.po to create ru.cp1251.po.
152071d4279SBram Moolenaarru.cp1251.po: ru.po
153071d4279SBram Moolenaar	rm -f ru.cp1251.po
15469a7cb47SBram Moolenaar	iconv -f utf-8 -t cp1251 ru.po | \
155a4a2934eSBram Moolenaar		sed -e 's/charset=[uU][tT][fF]-8/charset=cp1251/' -e 's/# Original translations/# Generated from ru.po, DO NOT EDIT/' > ru.cp1251.po
156071d4279SBram Moolenaar
15715d0a8c7SBram Moolenaar# Convert uk.po to create uk.cp1251.po.
15815d0a8c7SBram Moolenaaruk.cp1251.po: uk.po
15915d0a8c7SBram Moolenaar	rm -f uk.cp1251.po
1603577c6faSBram Moolenaar	iconv -f utf-8 -t cp1251 uk.po | \
161a4a2934eSBram Moolenaar		sed -e 's/charset=[uU][tT][fF]-8/charset=cp1251/' -e 's/# Original translations/# Generated from uk.po, DO NOT EDIT/' > uk.cp1251.po
16215d0a8c7SBram Moolenaar
16358d98234SBram Moolenaarprefixcheck:
164071d4279SBram Moolenaar	@if test "x" = "x$(prefix)"; then \
165071d4279SBram Moolenaar	  echo "******************************************"; \
166071d4279SBram Moolenaar	  echo "  please use make from the src directory  "; \
167071d4279SBram Moolenaar	  echo "******************************************"; \
168071d4279SBram Moolenaar	  exit 1; \
169071d4279SBram Moolenaar	fi
170071d4279SBram Moolenaar
171316059c0SBram Moolenaarclean: checkclean
172316059c0SBram Moolenaar	rm -f core core.* *.old.po *.mo *.pot sjiscorr
173d0380dc7SBram Moolenaar	rm -f LINGUAS vim.desktop gvim.desktop tmp_*desktop
174071d4279SBram Moolenaar
175071d4279SBram Moolenaardistclean: clean
176071d4279SBram Moolenaar
177316059c0SBram Moolenaarcheckclean:
178316059c0SBram Moolenaar	rm -f *.ck
179316059c0SBram Moolenaar
1800b39c3fdSBram MoolenaarPO_INPUTLIST = \
1810b39c3fdSBram Moolenaar	../*.c \
1820b39c3fdSBram Moolenaar	../if_perl.xs \
1830b39c3fdSBram Moolenaar	../GvimExt/gvimext.cpp \
184*fa57335eSBram Moolenaar	../errors.h \
1850b39c3fdSBram Moolenaar	../globals.h \
1860b39c3fdSBram Moolenaar	../if_py_both.h \
1870b39c3fdSBram Moolenaar	../vim.h \
1880b39c3fdSBram Moolenaar	gvim.desktop.in \
1890b39c3fdSBram Moolenaar	vim.desktop.in
1900b39c3fdSBram Moolenaar
1910b39c3fdSBram MoolenaarPO_VIM_INPUTLIST = \
1920b39c3fdSBram Moolenaar	../../runtime/optwin.vim
1930b39c3fdSBram Moolenaar
1940b39c3fdSBram MoolenaarPO_VIM_JSLIST = \
1950b39c3fdSBram Moolenaar	optwin.js
1960b39c3fdSBram Moolenaar
1970b39c3fdSBram Moolenaar$(PACKAGE).pot: $(PO_INPUTLIST) $(PO_VIM_INPUTLIST)
1980b39c3fdSBram Moolenaar	# Convert the Vim scripts to (what looks like) Javascript
1990b39c3fdSBram Moolenaar	$(VIM) -u NONE --not-a-term -S tojavascript.vim $(PACKAGE).pot $(PO_VIM_INPUTLIST)
2000b39c3fdSBram Moolenaar	# create vim.pot
2010b39c3fdSBram Moolenaar	$(XGETTEXT) --default-domain=$(PACKAGE) --add-comments \
2020b39c3fdSBram Moolenaar		--keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 \
2030b39c3fdSBram Moolenaar		$(PO_INPUTLIST) $(PO_VIM_JSLIST)
2040b39c3fdSBram Moolenaar	mv -f $(PACKAGE).po $(PACKAGE).pot
2050b39c3fdSBram Moolenaar	# Fix Vim scripts names, so that "gf" works
2060b39c3fdSBram Moolenaar	$(VIM) -u NONE --not-a-term -S fixfilenames.vim $(PACKAGE).pot $(PO_VIM_INPUTLIST)
2070b39c3fdSBram Moolenaar	# Delete the temporary files
2080b39c3fdSBram Moolenaar	rm *.js
209071d4279SBram Moolenaar
21012e91862SBram Moolenaarvim.desktop: vim.desktop.in $(POFILES)
211403f3eb4SBram Moolenaar	echo $(LANGUAGES) | tr " " "\n" |sed -e '/\./d' | sort > LINGUAS
212d0380dc7SBram Moolenaar	$(MSGFMT) --desktop -d . --template vim.desktop.in -o tmp_vim.desktop
21391882cf7SBram Moolenaar	rm -f LINGUAS
214d0380dc7SBram Moolenaar	if command -v desktop-file-validate; then desktop-file-validate tmp_vim.desktop; fi
215d0380dc7SBram Moolenaar	mv tmp_vim.desktop vim.desktop
21612e91862SBram Moolenaar
21712e91862SBram Moolenaargvim.desktop: gvim.desktop.in $(POFILES)
218403f3eb4SBram Moolenaar	echo $(LANGUAGES) | tr " " "\n" |sed -e '/\./d' | sort > LINGUAS
219d0380dc7SBram Moolenaar	$(MSGFMT) --desktop -d . --template gvim.desktop.in -o tmp_gvim.desktop
22091882cf7SBram Moolenaar	rm -f LINGUAS
221d0380dc7SBram Moolenaar	if command -v desktop-file-validate; then desktop-file-validate tmp_gvim.desktop; fi
222d0380dc7SBram Moolenaar	mv tmp_gvim.desktop gvim.desktop
223a60e536aSBram Moolenaar
224e37d50a5SBram Moolenaarupdate-po: $(LANGUAGES)
225e37d50a5SBram Moolenaar
226071d4279SBram Moolenaar# Don't add a dependency here, we only want to update the .po files manually
227071d4279SBram Moolenaar$(LANGUAGES):
228071d4279SBram Moolenaar	@$(MAKE) $(PACKAGE).pot
229071d4279SBram Moolenaar	if test ! -f $@.po.orig; then cp $@.po $@.po.orig; fi
230071d4279SBram Moolenaar	mv $@.po $@.po.old
231071d4279SBram Moolenaar	if $(MSGMERGE) $@.po.old $(PACKAGE).pot -o $@.po; then \
232071d4279SBram Moolenaar	    rm -f $@.po.old; \
233071d4279SBram Moolenaar	else \
234071d4279SBram Moolenaar	    echo "msgmerge for [email protected] failed!"; mv $@.po.old $@.po; \
235071d4279SBram Moolenaar	fi
236