1
2localedir = @LOCALEDIR@
3
4FVWM_POT_FILES = \
5     ../fvwm/fvwm3.c \
6     ../fvwm/expand.c \
7     ../fvwm/windowlist.c \
8     ../fvwm/virtual.c \
9     ../fvwm/menus.c
10
11FVWMRC_POT_FILES = \
12     ../default-config/config \
13     ../bin/fvwm-menu-desktop-config.fpl \
14     ../modules/FvwmForm/FvwmForm-XDGMenuHelp \
15     ../modules/FvwmForm/FvwmForm-XDGOptionsHelp
16
17FVWMSCRIPT_POT_FILES = \
18        ../default-config/FvwmScript-ConfirmQuit \
19        ../default-config/FvwmScript-ConfirmCopyConfig \
20	../modules/FvwmScript/Scripts/FvwmScript-BellSetup \
21	../modules/FvwmScript/Scripts/FvwmScript-KeyboardSetup \
22	../modules/FvwmScript/Scripts/FvwmScript-PointerSetup \
23	../modules/FvwmScript/Scripts/FvwmScript-ScreenSetup \
24	../modules/FvwmScript/Scripts/FvwmScript-FileBrowser
25
26EXTRA_DIST = \
27	@POFILES@ @GMOFILES@ fvwm.pot FvwmScript.pot \
28	remove-potcdate.sed remove-potcdate.sin
29
30COPYRIGHT_HOLDER = fvwm workers
31
32# These options get passed to xgettext.
33XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
34
35# This is the list of locale categories, beyond LC_MESSAGES, for which the
36# message catalogs shall be used.  It is usually empty.
37EXTRA_LOCALE_CATEGORIES =
38
39MSGMERGE_UPDATE = @MSGMERGE@ --update
40
41SUFFIXES = .po .gmo .mo .sed .sin .nop .po-update
42
43.po.mo:
44	@echo "$(MSGFMT) -c -o $@ $<"; \
45	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
46
47.po.gmo:
48	@lang=`echo $* | sed -e 's,.*/,,'`; \
49	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
50	if test -f $(srcdir)/$${lang}.po; then \
51	  echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
52	  cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo; \
53	fi
54
55.sin.sed:
56	sed -e '/^#/d' $< > t-$@
57	mv t-$@ $@
58
59
60all-local: all-local-@USE_NLS@
61
62# make [all] should do nothing ...
63#all-local-yes: $(CATALOGS)
64all-local-yes:
65all-local-no:
66
67catalogs: $(CATALOGS)
68
69maintainer-clean-local:
70	rm -f $(GMOFILES)
71
72$(FVWM_DOMAIN).pot-update: $(FVWM_POT_FILES) \
73	$(FVWMRC_POT_FILES) \
74	remove-potcdate.sed
75	rm -f fvwmrc.pot; \
76	rcpotfiles='$(FVWMRC_POT_FILES)'; \
77	rm -f duplicate; \
78	for file in $$rcpotfiles; do \
79	  perl -ne 's/\[gt\.((\\.|.)+?)\]/ print "\#$$ARGV: line $$.\n"."msgid \"$$1\"\n"."msgstr \"\"\n\n"/ge' \
80	  $$file >> duplicate; \
81	done; \
82	msguniq duplicate > fvwmrc.pot;
83	rm -f duplicate; \
84	potfiles='$(FVWM_POT_FILES)'; \
85	$(XGETTEXT) \
86	  --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) -o $(FVWM_DOMAIN).po \
87	  --copyright-holder='$(COPYRIGHT_HOLDER)' $$potfiles; \
88	test ! -f $(FVWM_DOMAIN).po || { \
89	  if test -f $(srcdir)/$(FVWM_DOMAIN).pot; then \
90	    sed -f remove-potcdate.sed < $(srcdir)/$(FVWM_DOMAIN).pot > $(FVWM_DOMAIN).1po && \
91	    sed -f remove-potcdate.sed < $(FVWM_DOMAIN).po > $(FVWM_DOMAIN).2po && \
92	    if cmp $(FVWM_DOMAIN).1po $(FVWM_DOMAIN).2po >/dev/null 2>&1; then \
93	      rm -f $(FVWM_DOMAIN).1po $(FVWM_DOMAIN).2po $(FVWM_DOMAIN).po; \
94	    else \
95	      rm -f $(FVWM_DOMAIN).1po $(FVWM_DOMAIN).2po $(srcdir)/$(FVWM_DOMAIN).pot && \
96	      mv $(FVWM_DOMAIN).po $(srcdir)/$(FVWM_DOMAIN).pot; \
97	    fi; \
98	  else \
99	    mv $(FVWM_DOMAIN).po $(srcdir)/$(FVWM_DOMAIN).pot; \
100	  fi; \
101	  mv $(FVWM_DOMAIN).pot duplicate.pot; \
102	  cat fvwmrc.pot >> duplicate.pot; \
103	  msguniq duplicate.pot  > $(FVWM_DOMAIN).pot; \
104	  rm -f duplicate.pot fvwmrc.pot; \
105	}
106
107$(srcdir)/$(FVWM_DOMAIN).pot:
108	$(MAKE) $(FVWM_DOMAIN).pot-update
109
110$(FVWMSCRIPT_DOMAIN).pot-update: $(FVWMSCRIPT_POT_FILES) \
111	remove-potcdate.sed
112	potfiles='$(FVWMSCRIPT_POT_FILES)'; \
113	rm -f duplicate; \
114	for file in $$potfiles; do \
115	  perl -ne 's/LocaleTitle\s+\{((\\.|.)+?)\}/ print "\#$$ARGV: line $$.\n"."msgid \"$$1\"\n"."msgstr \"\"\n\n"/ge' \
116	  $$file >> duplicate; \
117	done; \
118	msguniq duplicate > duplicate.pot; \
119        potfiles='/dev/null'; \
120        $(XGETTEXT) \
121          --add-comments=TRANSLATORS: --language=C -o $(FVWMSCRIPT_DOMAIN).pot \
122          --copyright-holder='$(COPYRIGHT_HOLDER)' --force-po $$potfiles; \
123	echo >> $(FVWMSCRIPT_DOMAIN).pot; \
124	cat duplicate.pot >> $(FVWMSCRIPT_DOMAIN).pot; \
125	rm -f duplicate duplicate.pot;
126
127$(srcdir)/$(FVWMSCRIPT_DOMAIN).pot:
128	$(MAKE) $(FVWMSCRIPT_DOMAIN).pot-update
129
130$(POFILES): $(srcdir)/$(FVWM_DOMAIN).pot \
131	$(srcdir)/$(FVWMSCRIPT_DOMAIN).pot
132	dlang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
133	dom=`echo $$dlang | sed -e 's/\..*$$//'`; \
134	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
135	if test -f $${dlang}.po; then \
136	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $${dlang}.po $${dom}.pot"; \
137	  cd $(srcdir) && $(MSGMERGE_UPDATE) $${dlang}.po $${dom}.pot; \
138	fi
139
140#	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
141#	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
142#	echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(FVWM_DOMAIN).pot"; \
143#	cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(FVWM_DOMAIN).pot
144
145install-data-local: install-data-local-@USE_NLS@
146install-data-local-no: all
147install-data-local-yes: all
148	$(mkinstalldirs) $(DESTDIR)$(datadir)
149	@catalogs='$(CATALOGS)'; \
150	all_domains='$(ALL_DOMAINS)'; \
151	for dom in $$all_domains; do \
152	  for cat in $$catalogs; do \
153	    cat=`basename $$cat`; \
154	    lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
155	    cat="$$dom.$$cat"; \
156	    dir=$(localedir)/$$lang/LC_MESSAGES; \
157	    $(mkinstalldirs) $(DESTDIR)$$dir; \
158	    if test -r $$cat; \
159	      then realcat=$$cat; \
160	    else realcat=$(srcdir)/$$cat; \
161	    fi; \
162	    if test -f $$realcat; then \
163	      $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$$dom.mo; \
164	      echo "installing $$realcat as $(DESTDIR)$$dir/$$dom.mo"; \
165	      for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
166	        if test -n "$$lc"; then \
167	          if (cd $(DESTDIR)$(localedir)/$$lang && \
168	              LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' \
169                      >/dev/null; then \
170	            link=`cd $(DESTDIR)$(localedir)/$$lang && \
171                         LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
172	            mv $(DESTDIR)$(localedir)/$$lang/$$lc \
173                       $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
174	            mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
175	            (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
176	             for file in *; do \
177	               if test -f $$file; then \
178	                 ln -s ../$$link/$$file \
179                               $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
180	               fi; \
181	             done); \
182	            rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
183	          else \
184	            if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
185	              :; \
186	            else \
187	              rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
188	              mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
189	            fi; \
190	          fi; \
191	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$$dom.mo; \
192	          ln -s ../LC_MESSAGES/$$dom.mo \
193	             $(DESTDIR)$(localedir)/$$lang/$$lc/$$dom.mo 2>/dev/null || \
194	          ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$$dom.mo \
195	             $(DESTDIR)$(localedir)/$$lang/$$lc/$$dom.mo 2>/dev/null || \
196	          cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$$dom.mo \
197	             $(DESTDIR)$(localedir)/$$lang/$$lc/$$dom.mo; \
198	          echo "installing $$realcat link as \
199	          $(DESTDIR)$(localedir)/$$lang/$$lc/$$dom.mo"; \
200	        fi; \
201	      done; \
202	    fi; \
203	  done; \
204	done
205
206
207installdirs-data: installdirs-data-local-@USE_NLS@
208installdirs-data-local-no:
209installdirs-data-local-yes:
210	$(mkinstalldirs) $(DESTDIR)$(datadir)
211	@catalogs='$(CATALOGS)'; \
212	all_domains='$(ALL_DOMAINS)'; \
213	for dom in $$all_domainss; do \
214	  for cat in $$catalogs; do \
215	    cat=`basename $$cat`; \
216	    lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
217	    dir=$(localedir)/$$lang/LC_MESSAGES; \
218	    $(mkinstalldirs) $(DESTDIR)$$dir; \
219	    for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
220	      if test -n "$$lc"; then \
221	        if (cd $(DESTDIR)$(localedir)/$$lang && \
222                    LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' \
223                    >/dev/null; then \
224	          link=`cd $(DESTDIR)$(localedir)/$$lang && \
225                        LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
226	          mv $(DESTDIR)$(localedir)/$$lang/$$lc \
227                     $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
228	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
229	          (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
230	           for file in *; do \
231	             if test -f $$file; then \
232	               ln -s ../$$link/$$file \
233                             $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
234	             fi; \
235	           done); \
236	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
237	        else \
238	          if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
239	            :; \
240	          else \
241	            rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
242	            mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
243	          fi; \
244	        fi; \
245	      fi; \
246	    done; \
247	  done; \
248	done
249
250
251uninstall-local: uninstall-local-@USE_NLS@
252uninstall-local-no:
253uninstall-local-yes:
254	catalogs='$(CATALOGS)'; \
255	all_domains='$(ALL_DOMAINS)'; \
256	for dom in $$all_domains; do \
257	  for cat in $$catalogs; do \
258	    cat=`basename $$cat`; \
259	    lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
260	    for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
261	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$$dom.mo; \
262	    done; \
263	  done; \
264	done
265	if test -d @FVWM_DATADIR@"/locale"; then rm -fr @FVWM_DATADIR@"/locale"; fi
266
267update-po: Makefile
268	$(MAKE) $(FVWM_DOMAIN).pot-update
269	$(MAKE) $(FVWMSCRIPT_DOMAIN).pot-update
270	$(MAKE) $(UPDATEPOFILES)
271	$(MAKE) update-gmo
272
273# General rule for updating PO files.
274
275.nop.po-update:
276	dlang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po-update$$//'`; \
277	dom=`echo $$dlang | sed -e 's/\..*$$//'`; \
278	tmpdir=`pwd`; \
279	echo "$$dlang:"; \
280	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
281	echo "$${cdcmd}$(MSGMERGE) $$dlang.po $$dom.pot -o $$dlang.new.po"; \
282	cd $(srcdir); \
283	if $(MSGMERGE) $$dlang.po $$dom.pot -o $$tmpdir/$$dlang.new.po; then \
284	  if cmp $$dlang.po $$tmpdir/$$dlang.new.po >/dev/null 2>&1; then \
285	    rm -f $$tmpdir/$$dlang.new.po; \
286	  else \
287	    if mv -f $$tmpdir/$$dlang.new.po $$dlang.po; then \
288	      :; \
289	    else \
290	      echo "msgmerge for $$dlang.po failed: cannot move \
291$$tmpdir/$$dlang.new.po to $$dlang.po" 1>&2; \
292	      exit 1; \
293	    fi; \
294	  fi; \
295	else \
296	  echo "msgmerge for $$dlang.po failed!" 1>&2; \
297	  rm -f $$tmpdir/$$dlang.new.po; \
298	fi
299
300$(DUMMYPOFILES):
301
302update-gmo: Makefile $(GMOFILES)
303	@:
304