CloverBootloader/CloverPackage/CloverPrefpane/translate_source.sh
2019-09-03 12:58:42 +03:00

73 lines
2.1 KiB
Bash

#!/bin/bash
##
# adjust settings here
##
application="Clover Preference Panel" # this is the name of the application
string_file="Localizable.strings" # the name of your Localizable string file
set -u
##
# no customizations below this line
##
cd "$(dirname $0)"
declare -r SOURCE_DIR="src"
declare -r PO_DIR="../package/po"
declare -r XCODE_MAJOR_VERSION=$(xcodebuild -version | grep ^Xcode | awk '{print $2}' | sed -e 's/\..*//')
# ========== OPTIONS ===========
EXTRACT_ONLY=0
while [[ $# -gt 0 ]]; do
option=$1
shift
case "$option" in
--extract-only) EXTRACT_ONLY=1 ;;
-*)
printf "Unrecognized option \`%s'\n" "$option" 1>&2
exit 1
;;
esac
done
# Only extract source locale strings if XCode version > 4
if [[ "$XCODE_MAJOR_VERSION" -ge 4 ]]; then
tmp_dir="/tmp/$application"
mkdir -p "$tmp_dir"
# Extract source locale strings (use this to check if you added new strings to your xibs)
echo -n "Updating strings file for ${application}... "
genstrings -s GetLocalizedString -o "$tmp_dir" $SOURCE_DIR/*.m
iconv -f utf-16 -t utf-8 "$tmp_dir/$string_file" | grep -vE '^\/\*.*\*\/$' | \
grep -vE '^$' >"$tmp_dir/$string_file.new"
cmp --silent "$string_file" "$tmp_dir/$string_file.new"
if [[ $? -ne 0 ]]; then
mv -f "$tmp_dir/$string_file.new" "$string_file"
fi
rm -rf "$tmp_dir"
echo "done"
else
echo "XCode version too old. Don't extracting locale strings from source files"
fi
[[ "$EXTRACT_ONLY" -eq 1 ]] && exit 0
# Generate localized strings
for locale in "$PO_DIR"/*.po ; do
locale="${locale%.po}"
locale="${locale#$PO_DIR/}"
echo -n "Check "$locale" strings... "
[[ ! -d "$SOURCE_DIR/$locale.lproj" ]] && mkdir -p "$SOURCE_DIR/$locale.lproj"
if [ ! -f "$SOURCE_DIR/$locale.lproj/$string_file" ] ; then
echo -n "strings file $SOURCE_DIR/$locale.lproj/$string_file not found in locale dir '$locale.lproj' - using template file... "
cp -f "$string_file" "$SOURCE_DIR/$locale.lproj/$string_file"
fi
echo "done"
done
exit 0
##
# end of script
##