On Wed, Nov 21, 2001 at 03:43:47PM +0100, Josip Rodin wrote: > On Wed, Nov 21, 2001 at 02:23:25PM +0100, Denis Barbier wrote: > > Not really, all slices should be there untranslated. Does someone write > > a script to update missing slices in such files? > > Perhaps it would be more useful if wml had a mode where it barfed about > missing tags.
Here is some material. It will only work when there is no newline embedded in translated text. The idea is very similar to the one used for countries: generate a template from language_names.wml, which is read by this file. Because of this loop, special care must be taken to ensure that file is generated before used. A target has been inserted into Makefile.common, but IIRC previous similar change with countries.wml did break nm.debian.org, so the 3language_names.def script could be put on klecker under /org/www.debian.org/cron/daily_updates to avoid such problems. After applying patch and creating language_names.def, the game can start. When you want to test this feature, simply add #use wml::debian::language_names at top of file, and s/define-tag/define-tag-sliced/g It seems to work quite well with english/Bugs/pkgreport-opts.inc, but please test before making intensive use of this toy. In particular, Chinese variants may cause trouble. Denis
#!/bin/sh -e # This script generates english/template/debian/language_names.def # from english/template/debian/language_names.wml . `dirname $0`/../common.sh cd $webtopdir/english/template/debian && make -f - <<EOT language_names.def: language_names.wml sed -e '/^#/d' -e '/<\/*protect/d' language_names.wml | eperl -B '<perl>' -E '</perl>' - >/dev/null EOT
Index: Makefile.common =================================================================== RCS file: /cvs/webwml/webwml/Makefile.common,v retrieving revision 1.47 diff -u -r1.47 Makefile.common --- Makefile.common 2001/09/29 13:16:15 1.47 +++ Makefile.common 2001/11/23 01:07:50 @@ -115,7 +115,7 @@ $(TEMPLDIR)/basic.wml: $(TEMPLDIR)/navbar.wml $(TEMPLDIR)/footer.wml: $(TEMPLDIR)/ctime.wml -$(TEMPLDIR)/languages.wml: $(TEMPLDIR)/language_names.wml +$(TEMPLDIR)/languages.wml: $(TEMPLDIR)/language_names.wml $(TEMPLDIR)/language_names.def $(TEMPLDIR)/mainpage.wml: $(TEMPLDIR)/basic.wml $(TEMPLDIR)/mirrors.wml \ $(TEMPLDIR)/languages.wml $(TEMPLDIR)/footer.wml $(TEMPLDIR)/links.tags.wml \ $(ENGLISHSRCDIR)/Pics/blue-upperleft.png $(ENGLISHSRCDIR)/Pics/blue-upperright.png \ @@ -171,6 +171,9 @@ $(TEMPLDIR)/countries.def: $(TEMPLDIR)/countries.wml cd $(TEMPLDIR) && sed -e /^#/d countries.wml | eperl -B '<:' -E ':>' - >/dev/null + +$(TEMPLDIR)/language_names.def: $(TEMPLDIR)/language_names.wml + cd $(TEMPLDIR) && sed -e '/^#/d' -e '/<\/*protect/d' language_names.wml | eperl -B '<perl>' -E '</perl>' - >/dev/null .SUFFIXES: Index: english/template/debian/language_names.wml =================================================================== RCS file: /cvs/webwml/webwml/english/template/debian/language_names.wml,v retrieving revision 1.169 diff -u -r1.169 language_names.wml --- english/template/debian/language_names.wml 2001/11/15 21:29:38 1.169 +++ english/template/debian/language_names.wml 2001/11/23 01:07:50 @@ -1,5 +1,10 @@ #use wml::std::tags +# The following module is generated from this script, see explanations +# at end of file +#use def::debian::language_names + + # Add a new entry for your language. Also add the english name for your # country to the existing entries. Use the same word for the translation # and make a request on debian-www for people to add the translations @@ -1275,4 +1280,34 @@ vietnamese => "Vietnamese", }, ); + +# These lines generate the language_names.def file, only when this file +# is processed through +# sed -e '/^#/d' -e '/<\/*protect/d' language_names.wml | eperl -B '<perl>' -E '</perl>' - >/dev/null +# WML will skip this block +if ('$(DUMMY_VAR_DO_NOT_REMOVE)' ne '') { + open(GEN, "> language_names.def"); + print GEN "# File generated automatically. Do not edit!\n"; + print GEN "<"."set-var _webwml_langs_=\"\\"; + foreach my $c (sort keys %trans) { + print GEN "\n".uc($c); + } + print GEN "\">\n\n"; +<protect pass=2> + print GEN << 'EOT'; +<define-tag define-tag-sliced endtag=required whitespace=delete> +<preserve default> +<set-var default=<subst-in-string %body + ".*\\[EN:([^\\n]*):\\].*" "\\1" singleline=true>> +<subst-in-string "=LT=define-tag %0> +<foreach _webwml_lang_ _webwml_langs_> +<or <match %body "\[<get-var _webwml_lang_>:[^\\n]*:\\]" action=extract> + "[<get-var _webwml_lang_>:<get-var default>:]"> +</foreach> +=LT=/define-tag>" "=LT=" "<"> +<restore default> +</define-tag> +EOT +</protect> +} </perl>