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";
|