[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: shell scripting in CMakeLists.txt?
From: Jason Harris <kstars () 30doradus ! org>
Date: 2006-03-27 14:19:21
Message-ID: 4427F469.8020300 () 30doradus ! org
[Download RAW message or body]
Hello,
In my Makefile.am, I have some scripting to extract strings from my data
files into a dummy source code file (kstars_i18n.cpp), just so the
data file strings get placed in the translation database (kstars.pot).
Without this scripting, strings in our data files won't be translated.
How can I duplicate this functionality in the CMakeLists.txt file? At
the moment, it appears to simply omit the strings extraction.
thanks,
Jason
Here are the relevant lines from my Makefile.am:
stringsfile:
cd $(srcdir);
rm -f kstars_i18n.cpp;
rm -f cities.tmp;
rm -f regions.tmp;
rm -f countries.tmp;
echo "#if 0" >> kstars_i18n.cpp;
# extract constellations
sed -e "s/\([0-9].*[a-z]\)//" < data/cnames.dat | sed
's/^[A-B]//' | \
sed 's/\([A-Z].*\)/i18n("Constellation name (optional)",
"\1");/' | sed\
's/\ "/"/g' >> "kstars_i18n.cpp";
# extract cities
awk 'BEGIN {FS=":"}; {print "\"" $$1 "\""; }' < data/Cities.dat | \
sed 's/ *\"$$/\");/g' | sed 's/^\" */i18n(\"City name
(optional, probab\
ly does not need a translation)\",\"/g' | sed 's/i18n(.*,"");//' >>
"cities.tmp\
";
sort cities.tmp | uniq >> kstars_i18n.cpp;
# extract regions
awk 'BEGIN {FS=":"}; {print "\"" $$2 "\""; }' < data/Cities.dat | \
sed 's/ *\"$$/\");/g' | sed 's/^\" */i18n(\"Region\/state name
(optiona\
l, rarely needs a translation)\",\"/g' | sed 's/i18n(.*,"");//' >>
"regions.tmp\
";
sort regions.tmp | uniq >> kstars_i18n.cpp;
# extract countries
awk 'BEGIN {FS=":"}; {print "\"" $$3 "\""; }' < data/Cities.dat | \
sed 's/ *\"$$/\");/g' | sed 's/^\" */i18n(\"Country name
(optional, but\
should be translated)\",\"/g' | sed 's/i18n(.*,"");//' >> "countries.tmp";
sort countries.tmp | uniq >> kstars_i18n.cpp;
# extract image/info menu items
awk 'BEGIN {FS=":"}; {print "i18n(\"Image/info menu item
(should be tra\
nslated)\",\"" $$2 "\");"; }' < data/image_url.dat | \
sed 's/i18n(.*,"");//' >> "image_url.tmp";
sort image_url.tmp | uniq >> kstars_i18n.cpp;
awk 'BEGIN {FS=":"}; {print "i18n(\"Image/info menu item
(should be tra\
nslated)\",\"" $$2 "\");"; }' < data/info_url.dat | \
sed 's/i18n(.*,"");//' >> "info_url.tmp";
sort info_url.tmp | uniq >> kstars_i18n.cpp;
# star names : some might be different in other languages, or they might
have t\
o be adapted to non-Latin alphabets
cat data/hip*.dat | perl -e 'while ( $$line=<STDIN> ) {
$$starname = su\
bstr ($$line,72); chop $$starname; if ( $$starname =~ /(.*)\:/ ) {
$$starnam\
e = $$1 . " "; } if ( $$starname =~ /(.*\w)(\s+)/) { $$starname =
$$1; \
$$starnames{$$starname} = 1; } } foreach $$star( sort keys
%starnames) { p\
rintf "i18n(\"star name\",\"%s\");\n", $$star; }' >> kstars_i18n.cpp;
# extract deep-sky object names (sorry, I don't know perl-fu ;( ...using
AWK )
cat data/ngcic*.dat | gawk '{ split(substr( $$0, 77 ), name, "
"); \
if ( name[1]!="" ) { \
printf( "%s", name[1] ); i=2; \
while( name[i]!="" ) { printf( " %s", name[i] ); i++; } \
printf( "\n" ); } }' | uniq | sort | gawk '{ \
printf( "i18n(\"object name (optional)\", \"%s\");\n", $$0 );
}' >> kst\
ars_i18n.cpp
# extract strings from file containing advanced URLs:
cat data/advinterface.dat | gawk '( match( $$0, "KSLABEL" ) ) {
\
name=substr($$0,10); \
printf( "i18n(\"Advanced URLs: description or category\",
\"%s\")\n", n\
ame ); }' >> kstars_i18n.cpp
# finish file
echo "#endif" >> kstars_i18n.cpp;
# cleanup temporary files
rm -f cities.tmp;
rm -f regions.tmp;
rm -f countries.tmp;
rm -f image_url.tmp;
rm -f info_url.tmp;
messages: rc.cpp stringsfile
rm -f tips.cpp
$(EXTRACTRC) *.ui tools/*.ui *.rc >> rc.cpp
(cd data && $(PREPARETIPS) > ../tips.cpp)
$(XGETTEXT) *.cpp *.h tools/*.cpp tools/*.h -o $(podir)/kstars.pot;
rm -f tips.cpp
rm -f kstars_i18n.cpp
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic