Scripting tools to interact with Thea 2 The Shattering files in order to translate them easily.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

75 linhas
2.5 KiB

#!/bin/bash
# to add document to zanata, extract .pot with:
# grep Key DATABASE_UI_LOCALIZATION.xml | awk -F'"' '{print "#. "$2"\n" "msgid " "\""$4"\"" "\n" "msgstr " "\"\""}' > DATABASE_UI_LOCALIZATION.pot
# then pass the .pot in poedit to merge duplication and add the Zanata header
if [[ "$#" -ne 3 ]]; then
echo "Please pass exactly 3 parameters: the .xml, the corresponding .po and the language"
exit 1
fi
ORIGINAL_XML="$1"
LANGUAGE="$3"
FINAL_DIR="$(pwd)/Translation/${LANGUAGE}/game_files/Databases/"
TRANS_XML=$(basename "${ORIGINAL_XML}")
TRANS_XML="${FINAL_DIR}/${TRANS_XML}"
ORIGINAL_PO="$2"
WORKDIR="/tmp/thea2/${LANGUAGE}"
TEMP_PO="/${WORKDIR}/passage.temp"
TEMP_MSGSTR="/${WORKDIR}/msgstr.temp"
TEMP_MSGID="/${WORKDIR}/msgid.temp"
#Let's work on the translated xml:
mkdir -p "${FINAL_DIR}"
mkdir -p "${WORKDIR}"
cp "${ORIGINAL_XML}" "${TRANS_XML}"
# First thing first, let's anonymize the pot and delete all email references
sed -i 's/[A-Za-z0-9._%+-]\+@[A-Za-z0-9.-]\+\.[A-Za-z]\{2,6\}//' "${ORIGINAL_PO}"
function insert_to_xml {
sed -i "s~\(Key=\"${key}\" Val=\)\".*\"\(.*\)~\1\"${translation}\"\2~g" ${TRANS_XML}
}
for key in $(grep Key ${ORIGINAL_XML} | awk -F'"' '{print $2}'); do
msgstr=""
msgid=""
translation=""
# We search for the exact key in the po file until we get a blank line, to get the full msgstr and the msgid
awk -v key="${key}" '{pat="#. "key"$"} !NF{s=0}s;$0 ~ pat{ print $0; s=1 }' ${ORIGINAL_PO} > ${TEMP_PO}
# Extract msgstr and merge all lines into one
awk '!NF{s=0}s;/msgstr/{ print $0; s=1 }' ${TEMP_PO} | sed -e 's/^"//' -e 's/"$//' -e 's/^msgstr "//' > ${TEMP_MSGSTR}
msgstr=$(awk 'NR{printf "%s",$0;next;}1' ${TEMP_MSGSTR})
# Extract msgid and merge all lines into one
awk '/msgid/{ s=1 }s;/msgstr/{ s=0 }' ${TEMP_PO} |grep -v "msgstr" | sed -e 's/^"//' -e 's/"$//' -e 's/^msgid "//' > ${TEMP_MSGID}
msgid=$(awk 'NR{printf "%s",$0;next;}1' ${TEMP_MSGID})
# Escape special char causing problem in with sed and xml
msgstr=${msgstr//'\n'/'\\n'}
msgstr=${msgstr//' & '/' & '}
msgstr=${msgstr//'\"'/"""}
msgstr=${msgstr//'&'/'\&'}
msgid=${msgid//'\n'/'\\n'}
msgid=${msgid//' & '/' & '}
msgid=${msgid//'\"'/"""}
msgid=${msgid//'&'/'\&'}
if [[ "${msgstr}" == "" ]]; then
# if the msgstr is empty, then it's not translated yet, we use original string
translation=${msgid}
else
translation=${msgstr}
fi
# Now we have the translation, we need to insert it to the xml file
insert_to_xml
done