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 |
---|