summaryrefslogtreecommitdiff
path: root/lib/gcstar/GCLang/GCLangUtils.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gcstar/GCLang/GCLangUtils.pm')
-rw-r--r--lib/gcstar/GCLang/GCLangUtils.pm56
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/gcstar/GCLang/GCLangUtils.pm b/lib/gcstar/GCLang/GCLangUtils.pm
new file mode 100644
index 0000000..3094b27
--- /dev/null
+++ b/lib/gcstar/GCLang/GCLangUtils.pm
@@ -0,0 +1,56 @@
+{
+ package GCLang::GCLangUtils;
+
+
+###################################################
+#
+# Copyright 2005-2008 Tian
+#
+# This file is part of GCstar.
+#
+# GCstar is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GCstar 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 GCstar; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+#
+###################################################
+
+use utf8;
+use strict;
+use Exporter;
+use base 'Exporter';
+our @EXPORT = qw(importTranslation);
+
+sub importTranslation
+{
+ my ($replace) = @_;
+ my ($pack) = caller(0);
+ my (undef, undef, undef, $subroutine) = caller(2);
+ # Avoid recursion as it could lead to some problems
+ return if $subroutine =~ /importTranslation/;
+ #Create the new package name. It supposes the module are in the same subfolders
+ (my $newPack = $pack) =~ s/(GC(Import|Export)?)(\w*)$/$1$replace/;
+ (my $newModule = $newPack) =~ s|::|/|g;
+ require "$newModule.pm";
+ my %tmpLang;
+ eval "%tmpLang = %".$newPack."::lang";
+ foreach my $translation(keys %tmpLang)
+ {
+ # Add it only if it was not defined previously
+ eval '$'.$pack.'::lang{'.$translation."} = \$tmpLang{$translation} if ! exists \$".$pack.'::lang{'.$translation.'}';
+ }
+
+}
+
+}
+
+1;