summaryrefslogtreecommitdiffstats
path: root/dilos/tdesdk/debian/desktop-i18n
diff options
context:
space:
mode:
Diffstat (limited to 'dilos/tdesdk/debian/desktop-i18n')
-rw-r--r--dilos/tdesdk/debian/desktop-i18n/createdesktop.pl98
-rw-r--r--dilos/tdesdk/debian/desktop-i18n/findfiles41
-rw-r--r--dilos/tdesdk/debian/desktop-i18n/msgsplit168
3 files changed, 307 insertions, 0 deletions
diff --git a/dilos/tdesdk/debian/desktop-i18n/createdesktop.pl b/dilos/tdesdk/debian/desktop-i18n/createdesktop.pl
new file mode 100644
index 000000000..c71551dc5
--- /dev/null
+++ b/dilos/tdesdk/debian/desktop-i18n/createdesktop.pl
@@ -0,0 +1,98 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+
+use Getopt::Long;
+
+sub printdate
+{
+ printf ( "%04i", ( $_[5] + 1900 ) );
+ print "-";
+ printf ( "%02i", $_[4] + 1);
+ print "-";
+ printf ( "%02i", $_[3] );
+ print " ";
+ printf ( "%02i", $_[2] );
+ print ":";
+ printf ( "%02i", $_[1] );
+ print "+0000";
+}
+
+sub prepare
+{
+ #warn "Running on Perl V5.8.x" if $^V ge v5.8.0;
+
+ binmode( STDOUT, ":utf8" ) if $^V ge v5.8.0;
+
+ my @now = gmtime();
+ print "#, fuzzy\n";
+ print "msgid \"\"\n";
+ print "msgstr \"\"\n";
+ print "\"Project-Id-Version: desktop files\\n\"\n";
+ print "\"Report-Msgid-Bugs-To: http://bugs.trinitydesktop.org\\n\"\n";
+ print "\"POT-Creation-Date: "; printdate( @now ); print "\\n\"\n";
+ print "\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n";
+ print "\"Last-Translator: FULL NAME <EMAIL\@ADDRESS>\\n\"\n";
+ print "\"Language-Team: LANGUAGE <kde-i18n-doc\@kde.org>\\n\"\n";
+ print "\"MIME-Version: 1.0\\n\"\n";
+ print "\"Content-Type: text/plain; charset=UTF-8\\n\"\n";
+ print "\"Content-Transfer-Encoding: 8bit\\n\"\n";
+ print "\n\n";
+}
+
+sub processfiles
+{
+ my ( $files, $basedir) = ( @_ );
+ for my $filename ( @$files )
+ {
+ chomp( $filename );
+ open( FH, "<", $filename ) or warn "Cannot open file $filename";
+ binmode( FH, ":utf8" ) if $^V ge v5.8.0;
+
+ #warn("Using $filename");
+
+ #my $regexp = qr{^(Name|Comment|Language|Keywords|About|Description|GenericName)=};
+ my $regexp = qr{^(Name|Comment|Language|Keywords|About|Description|GenericName|Query|ExtraNames|X-TDE-Submenu)=};
+
+ while( <FH> )
+ {
+ if ( m/$regexp/o )
+ {
+ my $msgid = $_;
+ chomp( $msgid );
+ $msgid =~ s/\\/\\\\/g;
+ $msgid =~ s/\"/\\\"/g;
+ if ($msgid =~ m/ +$/) {
+ $msgid =~ s/ +$//; # remove trailing spaces
+ print STDERR "ERROR: white space at the end of $msgid in $filename\n";
+ }
+ if ($msgid =~ m/\r+$/) {
+ $msgid =~ s/\r+$//; # remove trailing CR (Carriage Return)
+ print STDERR "ERROR: CR at the end of $msgid in $filename\n";
+ }
+ $filename =~ s,^$basedir/,,;
+ print "#: $filename:$.\n";
+ print "msgid \"$msgid\"\n";
+ print "msgstr \"\"\n";
+ print "\n";
+ }
+ }
+
+ close( FH );
+ }
+}
+
+my $onefilelist;
+my $basedir;
+GetOptions ( "file-list=s" => \$onefilelist,
+ "base-dir=s" => \$basedir
+ );
+
+prepare;
+
+open( FILELIST, $onefilelist ) or warn ( "Cannot open file list: $onefilelist" );
+my @thislist = <FILELIST>;
+processfiles( \@thislist, $basedir );
+close( FILELIST );
+
diff --git a/dilos/tdesdk/debian/desktop-i18n/findfiles b/dilos/tdesdk/debian/desktop-i18n/findfiles
new file mode 100644
index 000000000..f59fe6bae
--- /dev/null
+++ b/dilos/tdesdk/debian/desktop-i18n/findfiles
@@ -0,0 +1,41 @@
+#! /usr/bin/env bash
+
+filelist=$1
+
+rm -f "$filelist"_* $filelist
+
+touch $filelist
+
+dir=.
+
+find $dir -name "*.directory" -print | grep -v debian >> $filelist
+find $dir -name "*.kdelnk" -print | grep -v debian >> $filelist
+find $dir -name "*.desktop" -print | grep -v debian >> $filelist
+find $dir -name "*.kimap" -print | grep -v debian >> $filelist
+find $dir -name "*.themerc" -print | grep -v debian >> $filelist
+find $dir -name "*.kcsrc" -print | grep -v debian >> $filelist
+find $dir -name "*.setdlg" -print | grep -v debian >> $filelist
+find $dir -name "index.theme" -print | grep -v debian >> $filelist
+find $dir -name "eventsrc" -print | grep -v debian >> $filelist
+find $dir -name "*.protocol" -print | grep -v debian >> $filelist
+
+### TEMPORARY START: we do not have TDE modules
+if true; then
+find ./konqueror -name .svn -prune , -name "directory.*" -type f 2>/dev/null | grep -v debian >> $filelist
+find ./kdesktop -name .svn -prune , -name "directory.*" -type f 2>/dev/null | grep -v debian >> $filelist
+find ./drkonqi -name "*rc" -print 2>/dev/null | grep -v debian >> $filelist
+find ./kimgio -name \*.kimgio -print 2>/dev/null | grep -v debian >> $filelist
+find ./noatun -name \*.plugin -print 2>/dev/null | grep -v debian >> $filelist
+find ./noatun-plugins -name \*.plugin -print 2>/dev/null | grep -v debian >> $filelist
+find ./amor/data -name \*rc -print 2>/dev/null | grep -v debian >> $filelist
+find ./tdeprint -name \*.print -print 2>/dev/null | grep -v debian >> $filelist
+find . -name \*.kksrc -print 2>/dev/null | grep -v debian >> $filelist
+find ./kopete -name \*.plugin -print 2>/dev/null | grep -v debian >> $filelist
+find . -name \*.kdevtemplate -print 2>/dev/null | grep -v debian >> $filelist
+fi
+### TEMPORARY END: we do not have TDE modules
+
+# Extract .directory files in template directories of KOffice
+find . -name .directory|fgrep templates >> $filelist
+
+sort -o $filelist -u $filelist
diff --git a/dilos/tdesdk/debian/desktop-i18n/msgsplit b/dilos/tdesdk/debian/desktop-i18n/msgsplit
new file mode 100644
index 000000000..41481d336
--- /dev/null
+++ b/dilos/tdesdk/debian/desktop-i18n/msgsplit
@@ -0,0 +1,168 @@
+#! /usr/bin/env python
+
+import sys, string, codecs, os
+
+# TODO: currently the 78 chars are *without* the quotes, while for Gettext it is *with* the quotes
+# FIXME: it seems possible to get lines bigger than 80 characters.
+max_length = 78
+
+wrap_before = ['<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<p>', '<br>', '<br/>',
+ '<ol>', '<ul>', '<li>', '<table>', '<th>', '<tr>', '<td>', '<center>',
+ '<blockquote>', '<pre>', '<hr>', '<hr/>']
+
+### TODO: try to support any charset, not only UTF-8 (so that it can be used outside TDE)
+
+def splitit( start, message, outfile ):
+ # print start+"\""+message+"\"" # DEBUG
+ if len(start):
+ if len(message) + len(start) < max_length and \
+ string.find(message, '\\n') == -1:
+ outstr = '%s"%s"\n' % (start, message)
+ outfile.write(outstr.encode('utf-8'))
+ return
+ outfile.write(start)
+ outfile.write(u'""\n')
+ index = 0
+ mlen = len(message)
+ last_brace = 0
+ last_space = 0
+ last_comma = 0
+ while index < mlen:
+ if message[index] == r'n' and (index > 0 and message[index-1] == '\\') \
+ and (index < 2 or message[index-2] != '\\'):
+ outstr = '"%s"\n' % message[:index+1]
+ outfile.write(outstr.encode('utf-8'))
+ message = message[index+1:]
+ mlen -= index + 1
+ index = 0
+ last_brace = 0
+ last_space = 0
+ last_comma = 0
+ continue
+ elif message[index] == u'>':
+ last_brace = index
+ elif message[index] == u' ':
+ last_space = index
+ elif message[index] == u',':
+ last_comma = index
+ elif message[index] == u'<':
+ for s in wrap_before:
+ if index > 0 and message[index:].startswith(s):
+ outstr = '"%s"\n' % message[:index]
+ outfile.write(outstr.encode('utf-8'))
+ message = message[index:]
+ mlen -= index
+ index = 0
+ last_brace = 0
+ last_space = 0
+ last_comma = 0
+ continue
+ if index > max_length:
+ if last_brace > 50:
+ index = last_brace
+ while index < mlen - 1 and message[index+1] == ' ':
+ index += 1
+ elif last_space != 0:
+ index = last_space
+ elif last_comma != 0:
+ index = last_comma
+ else:
+ while index > 0 and message[index] == u'\\':
+ index = index - 1
+ outstr = '"%s"\n' % message[:index+1]
+ outfile.write(outstr.encode('utf-8'))
+ message = message[index+1:]
+ mlen -= index + 1
+ index = 0
+ last_brace = 0
+ last_space = 0
+ last_comma = 0
+ continue
+ index += 1
+ if len(message):
+ outstr = '"%s"\n' % message
+ outfile.write(outstr.encode('utf-8'))
+
+if sys.hexversion >= 0x02030000:
+ # We have Python 2.3 or better
+ open_type="rU" # Open for read with "Universal Newline Support"
+else:
+ # We have a Python older than 2.3
+ open_type="r" # Normal open for read
+### TODO: even in the case of a parse error, the script could try to process the next file(s) instead of exiting.
+for file in sys.argv[1:]:
+ orig_file = open(file, open_type)
+ new_file = open(file + ".new", 'w')
+
+ last=''
+ start=''
+ index=0
+ line=' '
+ while 1: # python 2.1 has no True ;)
+ line = orig_file.readline()
+ index += 1
+ if not line:
+ break
+ if line == '\n' or line[0] == '#':
+ splitit(start, last, new_file)
+ start = ''
+ last = ''
+ new_file.write(line)
+ continue
+ try:
+ line = string.strip(unicode(line, 'utf-8'))
+ except UnicodeError:
+ print file
+ if line[0] == '"' and line[-1:] == '"':
+ last += line[1:-1]
+ continue
+ # new message
+ splitit(start, last, new_file)
+ if line.startswith("msgid "):
+ start = "msgid "
+ last = string.lstrip(line[6:-1])[1:]
+ elif line.startswith("msgstr "):
+ start = "msgstr "
+ last = string.lstrip(line[7:-1])[1:]
+ elif line.startswith("msgctxt "):
+ start = "msgctxt "
+ last = string.lstrip(line[8:-1])[1:]
+ elif line.startswith("msgid_plural "):
+ start = "msgid_plural "
+ last = string.lstrip(line[13:-1])[1:]
+ elif line.startswith("msgstr["):
+ # For most languages, there will be only one digit
+ if line[8] == "]" and line[9] == " ":
+ if line[7].isdigit():
+ start = line[:10]
+ last = string.lstrip(line[10:-1])[1:]
+ else:
+ print file, "not-a-digit error for mgstr[] in line", index
+ orig_file.close()
+ new_file.close()
+ sys.exit(1)
+ else:
+ posdigit = 7 # The first digit is at position 7
+ while line[posdigit].isdigit():
+ posdigit += 1
+ if posdigit > 7 and line[posdigit] == "]" and line[posdigit+1] == " ":
+ posdigit += 2 # skip ] and the space
+ start = line[:posdigit]
+ last = string.lstrip(line[posdigit:-1])[1:]
+ else:
+ print file, "parse error after msgstr[ in line", index
+ orig_file.close()
+ new_file.close()
+ sys.exit(1)
+ else:
+ print file, "parsing error in line", index
+ orig_file.close()
+ new_file.close()
+ sys.exit(1)
+
+ splitit(start, last, new_file)
+ orig_file.close()
+ new_file.close()
+ os.rename(file + ".new", file)
+
+# kate: space-indent off; indent-width 8; replace-tabs off;