summaryrefslogtreecommitdiffstats
path: root/kturtle/scripts/i18n_highlighting.pl
blob: 463c364add5072db0e1db840818b5ed81595bf3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/perl -w

# Copyright (C) 2004 Rafael Beccar <rafael.beccar ! kdemail.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General
# Public License as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

 
# Author: Rafael Beccar <rafael.beccar ! kdemail.net>
# 
# Bs.As. November 2004
#
# Automagically gen. localized highlighting for KTurtle commands
#
# Usage:
# ./i18n_highlighting.pl logokeywords.YOURLANG.xml 
#
# E.g.
# ./i18n_highlighting.pl logokeywords.es.xml 
#
# NOTES:
# - You'll need logokeywords.YOURLANGCODE.xml under kturtle/scripts
# 
# - The script search for logokeywords.en_US.xml under ../data/
# and writes the resulting files under current directory
#


use strict;

my $langcode;
my @en_commands;
my @mylang_commands;
my %commands;
my $i;
my $line;

#Give message if no parameter passed
if (! $ARGV[0]){
        die "Usage:\n ./i18n_highlighting.pl logokeywords.YOURLANG.xml";}

#Get the langcode we are translating to
$_ = $ARGV[0];
if (/logokeywords.(\w+).xml/){
        $langcode = $1;
                }

#Get en_US commands
open EN_COMMANDS, "<../data/logokeywords.en_US.xml"
	or die "Cannot open ../data/logokeywords.en_US.xml";
$i=0;
while (<EN_COMMANDS>){
	if (/<keyword>(.*)<\/keyword>/){
		$en_commands[$i]=$1;
		$i++;
		}
	elsif (/<alias>(.*)<\/alias>/){
		$en_commands[$i]=$1;
		$i++;
		}
	}

close EN_COMMANDS;

#Get commands for the given language
$i=0;
while(<>){
	if (/<keyword>(.*)<\/keyword>/){
		$mylang_commands[$i]=$1;
		$commands{$en_commands[$i]}=$mylang_commands[$i];
		$i++;
		}
	elsif (/<alias>(.*)<\/alias>/){
		$mylang_commands[$i]=$1;
		$commands{$en_commands[$i]}=$mylang_commands[$i];
		$i++;
		}
	}
	
#Remove brackets from @en_commands (they are not needed here) 
#Brackets will be managed in a different way later
shift @en_commands;
shift @en_commands;

#Set destination
my $filename = "logohighlightstyle.${langcode}.xml";


#Parse logohighlightstyle.en_US.xml and generate the homologous for the given language
open HIGHLIGHT,"<../data/logohighlightstyle.en_US.xml"
	or die "Cannot open $_ \n";
while (<HIGHLIGHT>){
	#Manage language tag	
	if (m%(en_US)%){
		open TRANSLATION,">>$filename";
		select TRANSLATION;
		print "$`${langcode}$'";
		select STDOUT;}
	#Manage translatable lines
	elsif (m%<item> (\w+) </item>%){
		if ($commands{$1}){
			$line = "\t<item> $commands{$1} </item>";}
		open TRANSLATION,">>$filename";
		select TRANSLATION;
		print "$line \n";
		select STDOUT;
		}
	#Manage not translatable lines	
	else{
		open TRANSLATION,">>$filename";
		select TRANSLATION;
		print "$_";}
		select STDOUT;
	}
close TRANSLATION;
print "DONE... The translated file is:\n $filename \n";