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

88 lines
3.0 KiB
Bash

#!/bin/bash
##
# adjust settings here
##
application="Clover Preference Panel" # this is the name of the application
src_locale="en" # this is the language you design in
xib_file="CloverPrefpane.xib" # the name of your XIB interface builder file
strings_file="CloverPrefpane.strings" # the name of your strings 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
# Extract source locale strings (use this to check if you added new strings to your xibs)
echo -n "Updating '$src_locale' strings file for ${application}... "
ibtool --generate-strings-file $strings_file.utf16 "$SOURCE_DIR/$src_locale.lproj/$xib_file"
if [[ $? -eq 0 ]]; then
iconv -f utf-16 -t utf-8 $strings_file.utf16 | grep -vE '^\/\*.*\*\/$' | \
grep -vE '^$' >$strings_file.new
rm -f $strings_file.utf16
cmp --silent $strings_file $strings_file.new
if [[ $? -eq 0 ]]; then
# No change
rm -f $strings_file.new
else
mv -f $strings_file.new $strings_file
fi
echo "done"
else
echo "Generation failed. Not extracting locale strings from source XIB file"
fi
else
echo "XCode version too old. Not extracting locale strings from source XIB file"
fi
[[ "$EXTRACT_ONLY" -eq 1 ]] && exit 0
# Generate localized interfaces
for locale in "$PO_DIR"/*.po ; do
locale="${locale%.po}"
locale="${locale#$PO_DIR/}"
[[ "$locale" == $src_locale ]] && continue
echo -n "Generating "$locale" interface... "
[[ ! -d "$SOURCE_DIR/$locale.lproj" ]] && mkdir -p "$SOURCE_DIR/$locale.lproj"
if [ -f "$SOURCE_DIR/$locale.lproj/$strings_file" ] ; then
if [[ "$XCODE_MAJOR_VERSION" -lt 4 ]]; then
# XCode before version 4 doesn't recognize ibShadowedXXXXXX OID
# try to change to the old OID: gXXXXX
sed -i '' -E 's/\.ibShadowed([[:alnum:]]+)/\.g\1/g' "$SOURCE_DIR/$locale.lproj/$strings_file"
fi
ibtool --strings-file "$SOURCE_DIR/$locale.lproj/$strings_file" \
--write "$SOURCE_DIR/$locale.lproj/$xib_file" "$SOURCE_DIR/$src_locale.lproj/$xib_file"
else
echo -n "strings file $SOURCE_DIR/$locale.lproj/$strings_file not found in locale dir '$locale.lproj' - using '$src_locale' locale... "
cp -f "$SOURCE_DIR/$src_locale.lproj/$xib_file" "$SOURCE_DIR/$locale.lproj/$xib_file"
fi
echo "done"
done
##
# end of script
##