passepartout-apple/scripts/import-translations.sh
Davide a187fd56e0
Import manual translations with GPT (#1037)
Save prompt for proper input format.
2024-12-22 10:10:54 +01:00

56 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
cwd=`dirname $0`
source $cwd/env.sh
cd $cwd/..
if [[ -z "$1" ]]; then
echo "Input strings file required"
exit 1
fi
translations=`cat "$1"`
mkdir -p "$translations_input_path"
# Split translations into separate files
echo "$translations" | awk -v input_path="$translations_input_path" '
BEGIN {
lang_code = "";
}
/^\/\/ [a-z]{2}/ {
# Save the language code from lines starting with "//"
lang_code = substr($0, 4); # Extract language code (e.g., "de")
next;
}
/^$/ {
# Skip empty lines
next;
}
{
# Write to the appropriate language file
if (lang_code != "") {
file_path = input_path "/" lang_code;
print $0 >> file_path;
}
}
' "$1"
echo "Files have been created in the '$translations_input_path' directory."
for lang in `ls $translations_input_path`; do
input_path="$translations_input_path/$lang"
output_path="$translations_output_path/$lang.lproj/Localizable.strings"
keys_path="$output_path.keys"
tmp_path="$output_path.tmp"
# remove keys
sed -E 's/^"(.*)" = .*$/\1/' $input_path >$keys_path
grep -vf $keys_path $output_path >$tmp_path
# append new strings
cat $input_path >>$tmp_path
# sort and replace
sort $tmp_path | uniq >$output_path
rm "$keys_path" "$tmp_path"
done