aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtools/po-update.sh91
1 files changed, 51 insertions, 40 deletions
diff --git a/tools/po-update.sh b/tools/po-update.sh
index 27c2606..bf468bc 100755
--- a/tools/po-update.sh
+++ b/tools/po-update.sh
@@ -1,21 +1,21 @@
#!/bin/sh
-if test -z "$1"; then
- echo "Use: $0 <locale>"
- exit 2
-fi
-LL_CC="$1"
-shift
-
set -e
+if test "$1" = "-h" -o "$1" = "--help"; then
+ echo "Use: $0 [<language>]"
+ echo "Run without arguments to update all translation files."
+ exit 0
+fi
+
cd "$(readlink -f "$(dirname "$0")/..")"
-VERSION=(0.1)
+#VERSION=(0.1)
DOMAIN=(isodumper)
SOURCE_FILES=$(/bin/mktemp --tmpdir $DOMAIN-po-update-XXXXXX)
find "lib" -name '*.py' >"$SOURCE_FILES"
+find "share/isodumper" -name '*.glade.h' >"$SOURCE_FILES"
POT_DIR="$PWD/po"
test -d "$POT_DIR"
@@ -33,35 +33,46 @@ POT_FILE="$POT_DIR/$DOMAIN.pot"
/bin/sed --in-place --expression="s/charset=CHARSET/charset=UTF-8/" "$POT_FILE"
-PO_FILE="$POT_DIR/$LL_CC.po"
-
-test -r "$PO_FILE" || /usr/bin/msginit \
- --no-translator --locale="$LL_CC" \
- --input="$POT_FILE" \
- --output-file="$PO_FILE"
-
-#unfmt() {
-# local SOURCE="/usr/share/locale/$LL_CC/LC_MESSAGES/$1.mo"
-# if [ ! -f $SOURCE ]
-# then
-# local SOURCE="/usr/share/locale-langpack/$LL_CC/LC_MESSAGES/$1.mo"
-# fi
-# local TARGET="$(mktemp --tmpdir $1-$LL_CC-XXXXXX.po)"
-# /usr/bin/msgunfmt \
-# --no-escape --indent \
-# --output-file="$TARGET" \
-# "$SOURCE"
-# echo "$TARGET"
-#}
-
-#/usr/bin/msgmerge \
-# --update --no-fuzzy-matching \
-# --no-escape --indent --add-location --sort-by-file \
-# --lang="$LL_CC" \
-# --compendium="$(unfmt gtk30)" \
-# --compendium="$(unfmt gtk30-properties)" \
-# "$PO_FILE" "$POT_FILE"
-
-# /bin/sed --in-place --expression="s/Language: \\\\n/Language: $L_NAME\\\\n/" "$PO_FILE"
-
-echo "Language file is $PO_FILE"
+
+unfmt() {
+ local SOURCE="/usr/share/locale/$LL_CC/LC_MESSAGES/$1.mo"
+ if test ! -f "$SOURCE"; then
+ SOURCE="/usr/share/locale-langpack/$LL_CC/LC_MESSAGES/$1.mo"
+ fi
+ local TARGET="$(mktemp --tmpdir $1-$LL_CC-XXXXXX.po)"
+ /usr/bin/msgunfmt \
+ --no-escape --indent \
+ --output-file="$TARGET" \
+ "$SOURCE"
+ echo "$TARGET"
+}
+
+update_po() {
+ local LL_CC="$1"
+ local PO_FILE="$POT_DIR/$LL_CC.po"
+
+ test -r "$PO_FILE" || /usr/bin/msginit \
+ --no-translator --locale="$LL_CC" \
+ --input="$POT_FILE" \
+ --output-file="$PO_FILE"
+
+ /usr/bin/msgmerge \
+ --update --no-fuzzy-matching \
+ --no-escape --indent --add-location --sort-by-file \
+ --lang="$LL_CC" \
+ --compendium="$(unfmt gtk30)" \
+ --compendium="$(unfmt gtk30-properties)" \
+ "$PO_FILE" "$POT_FILE"
+
+ # /bin/sed --in-place --expression="s/Language: \\\\n/Language: $L_NAME\\\\n/" "$PO_FILE"
+ echo "Updated $PO_FILE"
+}
+
+if test "$1"; then
+ update_po "$1"
+else
+ for l in $(ls -1 "$POT_DIR"/??.po); do
+ l="$(basename "$l")"
+ update_po "${l%.po}"
+ done
+fi