From d7f878ecd0370b3edfb5da143189d9141d92660a Mon Sep 17 00:00:00 2001 From: Jeremy Katz Date: Tue, 3 Dec 2002 20:48:03 +0000 Subject: translations for the loader return --- loader2/Makefile | 18 +++++++++++++++- loader2/simplemot | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ loader2/tr/.cvsignore | 1 + 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100755 loader2/simplemot create mode 100644 loader2/tr/.cvsignore diff --git a/loader2/Makefile b/loader2/Makefile index 1af95a3da..b367ae3ac 100644 --- a/loader2/Makefile +++ b/loader2/Makefile @@ -58,7 +58,23 @@ COPTS += -DUSE_LOGDEV ISYSLIB += -lrpc endif -all: $(BINS) +# translation stuff +LANGS = $(shell awk '{ print $$2 }' ../lang-table | egrep -v '(^en$$)') + +TR = $(patsubst %,tr/%.tr,$(LANGS)) +TRFILES = $(patsubst %,%.tr,$(LANGS)) + +all: $(BINS) loader.tr + +loader.tr: $(TR) ../lang-table + (cd tr; ls $(TRFILES) | cpio --quiet -Hcrc -o |gzip -9) > $@ + +tr/%.tr: ../po/%.po loader.po + msgmerge $< loader.po | ./simplemot > $@ + +loader.po: $(wildcard *.c) + xgettext --default-domain=loader --add-comments \ + --keyword=_ --keyword=N_ *.c init: init.o $(CC) $(STATIC) $(COPTS) $(LDFLAGS) -o $@ init.o diff --git a/loader2/simplemot b/loader2/simplemot new file mode 100755 index 000000000..467020be0 --- /dev/null +++ b/loader2/simplemot @@ -0,0 +1,59 @@ +#!/usr/bin/perl + +$inone = 0; +$intran = 0; +$total = 0; +while (<>) { + if (!$inone && /^msgid/) { + chop; + $str = substr($_, 7, length($_) - 8); + $inone = 1; + } elsif ($inone && /^"/) { + chop; + $str .= substr($_, 1, length($_) - 2); + } elsif ($inone) { + $inone = 0; + + $str =~ s/\\n/\n/g; + $str =~ s/\\t/\t/g; + $str =~ s/\\"/"/g; + + # the string is complete -- calculate a hash + $sum = 0; + $xor = 0; + for ($i = 0; $i < length($str); $i++) { + $char = ord(substr($str, $i, 1)); + $sum += $char; + $xor ^= $char; + } + + $total = ($sum << 16) | (($xor & 0xFF) << 8) | (length($str) & 0xFF); + } + + if (!$intran && /^msgstr/) { + chop; + $tran = substr($_, 8, length($_) - 9); + $intran = 1; + } elsif ($intran && /^"/) { + chop; + $tran .= substr($_, 1, length($_) - 2); + } elsif ($intran) { + $intran = 0; + + $tran =~ s/\\n/\n/g; + $tran =~ s/\\t/\t/g; + $tran =~ s/\\"/"/g; + + if (!$total && $str) { + print STDERR "Missing string for $tran"; + exit 1 + } elsif ($str && $tran) { + print pack("Nn", $total, length($tran)); + print $tran; + + #if ($tran < 60) { + #printf STDERR ("0x%x %s\n", $total, $tran); + #} + } + } +} diff --git a/loader2/tr/.cvsignore b/loader2/tr/.cvsignore new file mode 100644 index 000000000..596343c4a --- /dev/null +++ b/loader2/tr/.cvsignore @@ -0,0 +1 @@ +*.tr -- cgit