| 1 |
#!/bin/sh |
|---|
| 2 |
# |
|---|
| 3 |
# TranslateNib.sh |
|---|
| 4 |
# |
|---|
| 5 |
# This tools helps creating localized nib files, |
|---|
| 6 |
# using nibtool. |
|---|
| 7 |
# |
|---|
| 8 |
# Copyright Stephane Corthesy 2001-2003, stephane@sente.ch |
|---|
| 9 |
# |
|---|
| 10 |
# Mar 7 2002: v1, initial public release |
|---|
| 11 |
# Jul 12 2002: v2, corrected CVS problem |
|---|
| 12 |
# Jan 3 2003: v3, adapted for Dec 2002 Dev Tools; added Subversion support |
|---|
| 13 |
# |
|---|
| 14 |
|
|---|
| 15 |
usage ( ) { |
|---|
| 16 |
echo "Usage: `basename $0` operation language file" |
|---|
| 17 |
echo " operation must be 'start' or 'end'" |
|---|
| 18 |
echo " language must be English, French, Spanish, ..." |
|---|
| 19 |
echo " file is the original nib file" |
|---|
| 20 |
echo " (Output directory must be writable)" |
|---|
| 21 |
} |
|---|
| 22 |
|
|---|
| 23 |
if [ $# -ne 3 ] ; then \ |
|---|
| 24 |
usage ; \ |
|---|
| 25 |
exit 1 |
|---|
| 26 |
fi |
|---|
| 27 |
|
|---|
| 28 |
operation="$1" |
|---|
| 29 |
editor="/Applications/TextEdit.app" |
|---|
| 30 |
|
|---|
| 31 |
if [ "$operation" != "start" -a "$operation" != "end" ] ; then \ |
|---|
| 32 |
usage ; \ |
|---|
| 33 |
exit 1 |
|---|
| 34 |
fi |
|---|
| 35 |
|
|---|
| 36 |
# Let's remove .nib/ suffix, if any |
|---|
| 37 |
filename=`basename "$3" .nib` |
|---|
| 38 |
inputDir=`dirname "$3"` |
|---|
| 39 |
inputFile="$inputDir/$filename.nib" |
|---|
| 40 |
|
|---|
| 41 |
# Now we check that source nib exists |
|---|
| 42 |
if [ ! -d "$inputFile" ] ; then \ |
|---|
| 43 |
echo "No such file "$inputFile ; \ |
|---|
| 44 |
exit 1 |
|---|
| 45 |
fi |
|---|
| 46 |
|
|---|
| 47 |
language="$2" |
|---|
| 48 |
outputDir="$inputDir/../$language.lproj" |
|---|
| 49 |
tempStringFile="$outputDir/___$filename.strings" |
|---|
| 50 |
outputFile="$outputDir/$filename.nib" |
|---|
| 51 |
|
|---|
| 52 |
if [ ! -d "$outputDir" ] ; then \ |
|---|
| 53 |
mkdir "$outputDir" |
|---|
| 54 |
fi |
|---|
| 55 |
|
|---|
| 56 |
# If user already translated nib in the past, we update it: |
|---|
| 57 |
# We use old translation strings + layout, merged with |
|---|
| 58 |
# new strings+elements |
|---|
| 59 |
|
|---|
| 60 |
if [ "$operation" = "start" ] ; then { |
|---|
| 61 |
if [ -d "$outputFile" ] ; then |
|---|
| 62 |
rm -rf "$tempStringFile" ; \ |
|---|
| 63 |
nibtool --previous "$outputFile" \ |
|---|
| 64 |
--localizable-strings \ |
|---|
| 65 |
--incremental "$outputFile" "$inputFile"\ |
|---|
| 66 |
> "$tempStringFile" ; \ |
|---|
| 67 |
open "$inputFile" |
|---|
| 68 |
else |
|---|
| 69 |
rm -rf "$tempStringFile" ; \ |
|---|
| 70 |
nibtool --localizable-strings "$inputFile" \ |
|---|
| 71 |
> "$tempStringFile" ; \ |
|---|
| 72 |
open "$inputFile" |
|---|
| 73 |
fi |
|---|
| 74 |
open -a "$editor" "$tempStringFile" |
|---|
| 75 |
} else { |
|---|
| 76 |
# Verify that .strings file format is correct |
|---|
| 77 |
pl < "$tempStringFile" > /dev/null |
|---|
| 78 |
if [ -d "$outputFile" ] ; then { |
|---|
| 79 |
# Let's preserve CVS/Subversion information, as nibtool doesn't... |
|---|
| 80 |
if [ -d "$outputFile/CVS" ] ; then |
|---|
| 81 |
cp -pR "$outputFile/CVS" "$outputFile/../CVS.tmp" |
|---|
| 82 |
fi |
|---|
| 83 |
if [ -d "$outputFile/.svn" ] ; then |
|---|
| 84 |
cp -pR "$outputFile/.svn" "$outputFile/../.svn.tmp" |
|---|
| 85 |
fi |
|---|
| 86 |
nibtool --dictionary "$tempStringFile" \ |
|---|
| 87 |
--Write "$outputFile" \ |
|---|
| 88 |
--incremental "$outputFile" \ |
|---|
| 89 |
"$inputFile" ; \ |
|---|
| 90 |
if [ -d "$outputFile/../CVS.tmp" ] ; then |
|---|
| 91 |
mv "$outputFile/../CVS.tmp" "$outputFile/CVS" |
|---|
| 92 |
fi |
|---|
| 93 |
if [ -d "$outputFile/../.svn.tmp" ] ; then |
|---|
| 94 |
mv "$outputFile/../.svn.tmp" "$outputFile/.svn" |
|---|
| 95 |
fi |
|---|
| 96 |
} else |
|---|
| 97 |
nibtool --dictionary "$tempStringFile" \ |
|---|
| 98 |
--write "$outputFile" \ |
|---|
| 99 |
"$inputFile" |
|---|
| 100 |
fi |
|---|
| 101 |
rm -rf "$tempStringFile" |
|---|
| 102 |
open "$outputFile" |
|---|
| 103 |
} fi |
|---|
| 104 |
|
|---|
| 105 |
# If file has only 2 bytes, it is empty |
|---|
| 106 |
#if [ -z `cut -b "3,4" < "$tempStringFile"` ] ; then \ |
|---|
| 107 |
# echo "Nothing to translate" |
|---|
| 108 |
# rm -rf "$tempStringFile" ; \ |
|---|
| 109 |
#else |
|---|
| 110 |
# open "$inputFile" |
|---|
| 111 |
# open -a "$editor" "$tempStringFile" |
|---|
| 112 |
#fi |
|---|
| 113 |
|
|---|
| 114 |
exit 0 |
|---|