Mercurial > mplayer.hg
annotate help/help_create.sh @ 34355:316f6edb49de
Avoid double conversion from utf16/ucs2 to utf8 for text subtitles.
There is code that auto-detects utf16 encoding of the subtitle stream
and forces the reading functions to convert it to native utf8.
The bug happens when using enca to (correctly) guess that the input
file has ucs2 encoding and tries to convert the input stream to utf8, again.
In my case iconv did not accept the input and discarded the subtitles
completely.
author | iive |
---|---|
date | Wed, 14 Dec 2011 00:17:49 +0000 |
parents | 7e7c541566ad |
children | be4dcfb3620c |
rev | line source |
---|---|
26878
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
1 #!/bin/sh |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
2 # Create the messages header file from the master source file or a translation. |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
3 # Missing messages are filled in from the master message file and, if |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
4 # requested, character set conversion is performed. |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
5 |
28432
eb42079ed5f7
Print an error message when given insufficient parameters.
diego
parents:
26878
diff
changeset
|
6 if test -z $2 ; then |
eb42079ed5f7
Print an error message when given insufficient parameters.
diego
parents:
26878
diff
changeset
|
7 echo "Error: missing parameters" |
eb42079ed5f7
Print an error message when given insufficient parameters.
diego
parents:
26878
diff
changeset
|
8 echo "Usage: $0 <messages file> <character set>" |
eb42079ed5f7
Print an error message when given insufficient parameters.
diego
parents:
26878
diff
changeset
|
9 exit 1 |
eb42079ed5f7
Print an error message when given insufficient parameters.
diego
parents:
26878
diff
changeset
|
10 fi |
eb42079ed5f7
Print an error message when given insufficient parameters.
diego
parents:
26878
diff
changeset
|
11 |
26878
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
12 MASTER=help/help_mp-en.h |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
13 TARGET=help_mp.h |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
14 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
15 TRANSLATION=$1 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
16 CHARSET=$2 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
17 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
18 missing_messages(){ |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
19 curr="" |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
20 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
21 while read -r line; do |
30990 | 22 if echo "$line" | grep -q '^#define' ; then |
23 curr=`printf "%s\n" "$line" | cut -d ' ' -f 2` | |
24 if grep -q "^#define $curr[ ]" "$TRANSLATION" ; then | |
25 curr="" | |
26 fi | |
31681 | 27 elif [ -z "$line" ]; then |
28 curr="" | |
30990 | 29 fi |
30 if [ -n "$curr" ]; then | |
31 printf "%s\n" "$line" | |
32 fi | |
26878
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
33 done |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
34 } |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
35 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
36 cat <<EOF > "$TARGET" |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
37 /* WARNING! This is a generated file, do NOT edit. |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
38 * See the help/ subdirectory for the editable files. */ |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
39 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
40 #ifndef MPLAYER_HELP_MP_H |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
41 #define MPLAYER_HELP_MP_H |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
42 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
43 EOF |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
44 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
45 cat "$TRANSLATION" >> "$TARGET" |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
46 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
47 cat <<EOF >> "$TARGET" |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
48 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
49 /* untranslated messages from the English master file */ |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
50 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
51 EOF |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
52 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
53 if test "$MASTER" != "$TRANSLATION" ; then |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
54 missing_messages < "$MASTER" >> "$TARGET" |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
55 fi |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
56 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
57 cat <<EOF >> "$TARGET" |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
58 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
59 #endif /* MPLAYER_HELP_MP_H */ |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
60 EOF |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
61 |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
62 if test $CHARSET != UTF-8 ; then |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
63 iconv -f UTF-8 -t "$CHARSET" "$TARGET" > "${TARGET}.tmp" |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
64 mv "${TARGET}.tmp" "$TARGET" |
73921138ff30
Move messages header file creation to a separate shell script.
diego
parents:
diff
changeset
|
65 fi |