CloverBootloader/CloverPackage/CloverUpdater/translate_xib.sh

83 lines
2.7 KiB
Bash
Raw Normal View History

#!/bin/bash
##
# adjust settings here
##
application="CloverUpdater" # this is the name of the application
src_locale="en" # this is the language you design in
xib_file="MainMenu.xib" # the name of your XIB interface builder file
strings_file="CloverUpdater.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 $target_locales ; do
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
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
##