-done
-
-find $TOP_DIR -type f|sed '
-1i\
-%defattr (644, root, root, 755)
-s:'"$TOP_DIR"'::
-'"$ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) \1\2\3:
-'"$NO_ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) \1\2\3:
-s:^\([^%].*\)::
-s:%lang(C) ::
-s:^\$::' > $MO_NAME
-
-find $TOP_DIR -type d|sed '
-s:'"$TOP_DIR"'::
+done
+
+echo "$PROG/$VERSION: find-lang '$NAME' $APPEND> $OUTPUT"
+
+MO_NAME=.$OUTPUT.tmp~
+echo '%defattr(644,root,root,755)' > $MO_NAME
+
+# .mo
+if [ ! -f __find.files ] || [ "$TOP_DIR" -nt __find.files ]; then
+ find $TOP_DIR -xtype f -name '*.mo' | xargs -r file -L | \
+ sed -e '
+ /, 1 messages$/d
+ s/:.*//
+ s:'"$TOP_DIR"'::' > __find.files
+else
+ echo "$PROG: Using cached __find.files"
+fi
+
+# .omf
+if [ ! -f __omf.files ] || [ "$TOP_DIR" -nt __omf.files ]; then
+ find $TOP_DIR -type f -name '*.omf' | \
+ sed -e '
+ s:'"$TOP_DIR"'::' > __omf.files
+else
+ echo "$PROG: Using cached __omf.files"
+fi
+
+# .qm
+if [ ! -f __qm.files ] || [ "$TOP_DIR" -nt __qm.files ]; then
+ find $TOP_DIR -type f -name '*.qm' | \
+ sed -e '
+ s:'"$TOP_DIR"'::' > __qm.files
+else
+ echo "$PROG: Using cached __qm.files"
+fi
+
+# .mo
+(
+ if [ "$ALL_NAME" ]; then
+ fgrep $NAME __find.files
+ else
+ cat __find.files
+ fi
+) | sed '
+'"$ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/@]\+\)\(@quot\|@boldquot\)\?\(@[^/]*\)\?\(/.*\.mo$\):%lang(\2\4) \1\2\3\4\5:
+'"$NO_ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/@]\+\)\(@quot\|@boldquot\)\?\(@[^/]*\)\?\(/.*/'"$NAME"'\.mo$\):%lang(\2\4) \1\2\3\4\5:
+/^[^%]/d
+s:%lang(C) ::' >> $MO_NAME
+
+# .omf
+(
+ if [ "$ALL_NAME" ]; then
+ fgrep $NAME __omf.files
+ else
+ cat __omf.files
+ fi
+) | sed '
+'"$ALL_NAME$OMF"'s:\(.*/share/omf/[^/]\+/\)\(.*-\)\([^-]*\)\(\.omf\):%lang(\3) \1\2\3\4:
+'"$NO_ALL_NAME$OMF"'s:\(.*/share/omf/'"$NAME"'/\)\(.*-\)\([^-]*\)\(\.omf\):%lang(\3) \1\2\3\4:
+/^[^%]/d
+s:%lang(C) ::' >> $MO_NAME
+
+# .qm
+(
+ if [ "$ALL_NAME" ]; then
+ fgrep $NAME __qm.files
+ else
+ cat __qm.files
+ fi
+) | sed '
+'"$ALL_NAME$QM"'s:\(.*/share/locale/\)\([^/@]\+\)\(@quot\|@boldquot\)\?\(@[^/]*\)\?\(/.*\.qm$\):%lang(\2\4) \1\2\3\4\5:
+'"$NO_ALL_NAME$QM"'s:\(.*/share/locale/\)\([^/@]\+\)\(@quot\|@boldquot\)\?\(@[^/]*\)\?\(/.*/'"$NAME"'\.qm$\):%lang(\2\4) \1\2\3\4\5:
+/^[^%]/d
+s:%lang(C) ::' >> $MO_NAME
+
+if [ ! -f __find.dirs ] || [ "$TOP_DIR" -nt __find.dirs ]; then
+ find $TOP_DIR -mindepth 1 -type d | sed 's:'"$TOP_DIR"'::' > __find.dirs
+else
+ echo "$PROG: Using cached __find.dirs"
+fi
+
+# gnome
+(
+ if [ "$ALL_NAME" ]; then
+ fgrep $NAME __find.dirs
+ else
+ cat __find.dirs
+ fi
+) | sed '
+'"$NO_ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/]\+\)\(/'"$NAME"'\)$:%lang(\2) \1\2\3: