100 lines
3.0 KiB
Bash
Executable File
100 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
export LC_ALL=C # avoid sed hang
|
|
|
|
SHORTLIST_DIR="./debian/short-tmp"
|
|
SHORTLIST_LANGS=$(cd $SHORTLIST_DIR; ls *.short | cut -d. -f1)
|
|
|
|
TEMPLATE_BASE="./debian/templates.base"
|
|
TEMPLATE_TMP="./debian/templates.tmp"
|
|
TEMPLATE_NEW="./debian/templates"
|
|
TEMPLATE_NAME="localechooser/shortlist"
|
|
|
|
NL="
|
|
"
|
|
|
|
print_trans () {
|
|
ITEM_TRANS=$(awk -v ITEM="$1-$LANG.UTF-8:" \
|
|
-f template_get_item.awk $TEMPLATE_TMP)
|
|
if [ -n "$ITEM_TRANS" ] ; then
|
|
echo "$ITEM_TRANS"
|
|
else
|
|
# We use the original entry as default
|
|
REGEXP="s/$1:/$1-$LANG.UTF-8:/"
|
|
echo "$2" | sed "$REGEXP"
|
|
fi
|
|
}
|
|
|
|
# First create empty new files
|
|
:>$TEMPLATE_NEW
|
|
:>$TEMPLATE_TMP
|
|
|
|
# Extract the template for the shortlists to TEMPLATE_TMP
|
|
# Extract all other templates to TEMPLATE_NEW
|
|
awk -v TFILE1="$TEMPLATE_TMP" -v TFILE2="$TEMPLATE_NEW" \
|
|
-v TEMPLATE="$TEMPLATE_NAME" -f template_extract.awk \
|
|
$TEMPLATE_BASE
|
|
echo "" >>$TEMPLATE_NEW
|
|
|
|
# Get the English versions of the template items
|
|
EN_CHOICES=$(awk -v ITEM="Choices:" -f template_get_item.awk $TEMPLATE_TMP)
|
|
EN_DESCR=$(awk -v ITEM="Description:" -f template_get_item.awk $TEMPLATE_TMP)
|
|
|
|
# Add new templates for each language that needs a shortlist
|
|
for LANG in $SHORTLIST_LANGS; do
|
|
echo "$LANG"
|
|
|
|
# Write the 'template header' to the file
|
|
echo "Template: $TEMPLATE_NAME/$LANG" >>$TEMPLATE_NEW
|
|
echo "Type: select" >>$TEMPLATE_NEW
|
|
|
|
# Next we put the countrycodes in the untranslated shortlist
|
|
SHORTLIST=
|
|
for COUNTRYCODE in $(cat $SHORTLIST_DIR/$LANG.short | cut -f 1) ; do
|
|
SHORTLIST="$SHORTLIST$COUNTRYCODE, "
|
|
done
|
|
C_CHOICES=$(echo $EN_CHOICES | sed "s/Choices:/Choices-C:/")
|
|
REGEXP="s/\${SHORTLIST}, /$SHORTLIST/"
|
|
echo "$C_CHOICES" | sed "$REGEXP" >>$TEMPLATE_NEW
|
|
|
|
# Next we build a shortlist containing the countrynames in English
|
|
SHORTLIST=
|
|
OLD_IFS="$IFS"
|
|
IFS="$NL"
|
|
COUNTRYLIST=
|
|
for COUNTRYNAME in $(cut -f 3 $SHORTLIST_DIR/$LANG.short); do
|
|
# Comma's in countrynames must be double-escaped here
|
|
# in order to end up escaped in the final list.
|
|
SL_NAME=$(echo "$COUNTRYNAME" | sed -e 's/,/\\\\,/')
|
|
SHORTLIST="$SHORTLIST$SL_NAME, "
|
|
done
|
|
IFS="$OLD_IFS"
|
|
REGEXP="s/\${SHORTLIST}, /$SHORTLIST/" >>$TEMPLATE_NEW
|
|
echo "$EN_CHOICES" | sed "$REGEXP" >>$TEMPLATE_NEW
|
|
|
|
# Next we build the translated shortlist containing translated countrynames
|
|
if [ "$LANG" != en ]; then
|
|
SHORTLIST=
|
|
OLD_IFS="$IFS"
|
|
IFS="$NL"
|
|
COUNTRYLIST=
|
|
for COUNTRYNAME in $(cut -f 2 $SHORTLIST_DIR/$LANG.short) ; do
|
|
# Comma's in countrynames must be double-escaped here
|
|
# in order to end up escaped in the final list.
|
|
SL_NAME=$(echo "$COUNTRYNAME" | sed -e 's/,/\\\\,/')
|
|
SHORTLIST="$SHORTLIST$SL_NAME, "
|
|
done
|
|
IFS="$OLD_IFS"
|
|
TRANS_CHOICES=$(print_trans "Choices" "$EN_CHOICES")
|
|
REGEXP="s/\${SHORTLIST}, /$SHORTLIST/" >>$TEMPLATE_NEW
|
|
echo "$TRANS_CHOICES" | sed "$REGEXP" >>$TEMPLATE_NEW
|
|
fi
|
|
|
|
# Finally we add the description and translated description
|
|
echo "$EN_DESCR" >>$TEMPLATE_NEW
|
|
if [ ! "$LANG" = en ]; then
|
|
print_trans "Description" "$EN_DESCR" >>$TEMPLATE_NEW
|
|
fi
|
|
echo "" >>$TEMPLATE_NEW
|
|
done
|