summaryrefslogtreecommitdiffstats
path: root/kturtle/scripts/i18n_examples.pl
diff options
context:
space:
mode:
Diffstat (limited to 'kturtle/scripts/i18n_examples.pl')
-rwxr-xr-xkturtle/scripts/i18n_examples.pl214
1 files changed, 214 insertions, 0 deletions
diff --git a/kturtle/scripts/i18n_examples.pl b/kturtle/scripts/i18n_examples.pl
new file mode 100755
index 00000000..36115ea8
--- /dev/null
+++ b/kturtle/scripts/i18n_examples.pl
@@ -0,0 +1,214 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2004-2005 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 generate localized KTurtle logo code.
+#
+# Usage: ./i18n_examples.pl logokeywords.YOURLANGCODE.xml
+#
+# e.g.:
+# $./i18n_examples.pl logokeywords.es.xml
+#
+# arrow.logo -> arrow.es.LOGO
+# canvascolors.logo -> canvascolors.es.LOGO
+# curly.logo -> curly.es.LOGO
+#
+# NOTES:
+# - You'll need logokeywords.YOURLANGCODE.xml under kturtle/scripts
+# - Commented lines, variable names, and strings like
+# "What's your name?" must be translated by hand.
+# - You might want to rename the resulting files to something
+# into your own language e.g. arrow.es.LOGO to flecha.LOGO
+# - Please, if the script is not working for you report it to
+# KDE-Edu mailing list.
+#
+
+
+use strict;
+
+my @en_commands;
+my $langcode;
+my @mylang_commands;
+my %commands;
+my $i;
+my @examples= glob "../data/*.logo";
+my $filename;
+my $line;
+
+
+#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 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 aren't needed here)
+#Brackets will be managed in a different way later
+shift @en_commands;
+shift @en_commands;
+
+
+#Parse *.logo and generate the homologous for the given language
+foreach (@examples){
+ if (m%^../data/(\w+).logo%){$filename="$1".".$langcode."."logo";}
+ else{die "Error: Check if you have ../data/*.logo files";}
+ printf "\n%-25s > ./%s \n", $_, $filename;
+ open EXAMPLE,"<$_"
+ or die "Cannot open $_ \n";
+ while (<EXAMPLE>){
+ #Manage comments (they do not get translated)
+ if (/^#(.*)/){
+ open TRANSLATION,">>$filename";
+ select TRANSLATION;
+ print "#$1\n";
+ select STDOUT;}
+ #Manage tabulated "for .. to .." lines
+ elsif (/(^\s+)(\bfor\b)(.*)(\bto\b)/){
+ chomp ($line = "$1$commands{$2}$3$commands{$4}$'");
+ open TRANSLATION, ">>$filename";
+ select TRANSLATION;
+ print "$line \n";
+ select STDOUT;}
+ #Manage tabulated brackets
+ elsif (/(^\s+)(\p{IsPunct})/){
+ open TRANSLATION,">>$filename";
+ select TRANSLATION;
+ print "$1$2\n";
+ select STDOUT;}
+ #Manage any other tabulated line
+ elsif (/(^\s+)(\w+)/){
+ my $tab=$1;
+ if ($commands{$2}){
+ chomp ($line = "$commands{$2}$'");
+ }
+ elsif (/([=])(\s+)(\w+)/){
+ if ($commands{$3}){
+ $tab="";
+ chomp ($line = "$`$1$2$commands{$3}$'");
+ }
+ }
+ elsif (/([=])(\w+)/){
+ if ($commands{$2}){
+ chomp ($line = "$`$1$commands{$2}$'");
+ }
+ }
+ else
+ {
+ chomp ($line = "$2$'");
+ }
+ open TRANSLATION,">>$filename";
+ select TRANSLATION;
+ print "$tab$line\n";
+ select STDOUT;}
+ #Manage "for .. to .." lines
+ elsif (/(^\bfor\b)(.*)(\bto\b)/){
+ chomp (my $line = "$commands{$1}$2$commands{$3}$'");
+ open TRANSLATION, ">>$filename";
+ select TRANSLATION;
+ print "$line\n";
+ select STDOUT;}
+ #Manage any other line of code
+ elsif (/(^\w+)/){
+ if ($commands{$&}){
+ chomp ($line = "$commands{$&}$'");
+ }
+ elsif (/([=])(\s+)(\w+)/){
+ if ($commands{$3}){
+ chomp ($line = "$`$1$2$commands{$3}$'");
+ }
+ }
+ elsif (/([=])(\w+)/){
+ if ($commands{$2}){
+ chomp ($line = "$`$1$commands{$2}$'");
+ }
+ }
+ else{
+ chomp ($line = "$1$'");
+ }
+ open TRANSLATION, ">>$filename";
+ select TRANSLATION;
+ print "$line \n";
+ select STDOUT;
+ }
+ #Manage brackets
+ elsif (/\p{IsPunct}/){
+ open TRANSLATION,">>$filename";
+ select TRANSLATION;
+ print "$&\n";
+ select STDOUT;}
+ #Manage empty lines
+ elsif (/^\s+/){
+ open TRANSLATION,">>$filename";
+ select TRANSLATION;
+ print "\n";
+ select STDOUT;}
+
+ }
+ }
+
+print <<EOF;
+
+The translation of KTurtle examples is almost DONE...
+You will need to translate the following by hand:
+1) Commented lines,
+2) Variable names (if any of them is named in english or represents a reserved word in your language),
+3) Strings like "What's your name?"
+4) File names
+
+Thanks a lot!
+
+EOF
+