summaryrefslogtreecommitdiff
path: root/packaging/schemas-merge.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/schemas-merge.patch')
-rw-r--r--packaging/schemas-merge.patch153
1 files changed, 153 insertions, 0 deletions
diff --git a/packaging/schemas-merge.patch b/packaging/schemas-merge.patch
new file mode 100644
index 0000000..caa1e3c
--- /dev/null
+++ b/packaging/schemas-merge.patch
@@ -0,0 +1,153 @@
+diff -up intltool-0.40.6/intltool-merge.in.schemas intltool-0.40.6/intltool-merge.in
+--- intltool-0.40.6/intltool-merge.in.schemas 2009-02-14 17:12:28.000000000 -0500
++++ intltool-0.40.6/intltool-merge.in 2009-04-27 01:41:11.099450891 -0400
+@@ -38,8 +38,9 @@ my $PACKAGE = "@PACKAGE@";
+ my $VERSION = "@VERSION@";
+
+ ## Loaded modules
+-use strict;
++use strict;
+ use Getopt::Long;
++use Cwd;
+ use Text::Wrap;
+ use File::Basename;
+ use Encode;
+@@ -68,6 +69,9 @@ my $PASS_THROUGH_ARG = 0;
+ my $UTF8_ARG = 0;
+ my $MULTIPLE_OUTPUT = 0;
+ my $cache_file;
++my $GETTEXT_PACKAGE = "";
++my %varhash = ();
++my $SRCDIR = $ENV{"srcdir"} || ".";
+
+ ## Handle options
+ GetOptions
+@@ -87,7 +91,8 @@ GetOptions
+ "pass-through|p" => \$PASS_THROUGH_ARG,
+ "utf8|u" => \$UTF8_ARG,
+ "multiple-output|m" => \$MULTIPLE_OUTPUT,
+- "cache|c=s" => \$cache_file
++ "cache|c=s" => \$cache_file,
++ "gettext-package|g=s" => \$GETTEXT_PACKAGE
+ ) or &error;
+
+ my $PO_DIR;
+@@ -103,6 +108,8 @@ my $w = "[-A-Za-z0-9._:]";
+ # XML quoted string contents
+ my $q = "[^\\\"]*";
+
++my $MODULE = $GETTEXT_PACKAGE || FindPackageName() || "unknown";
++
+ ## Check for options.
+
+ if ($VERSION_ARG)
+@@ -216,6 +223,8 @@ Other options:
+ a single file containing all localized elements
+ -c, --cache=FILE specify cache file name
+ (usually \$top_builddir/po/.intltool-merge-cache)
++ -g, --gettext-package=NAME
++ specify gettext domain, needed for --schemas-style
+ -q, --quiet suppress most messages
+ --help display this help and exit
+ --version output version information and exit
+@@ -241,6 +250,25 @@ sub print_message
+ }
+
+
++sub FindPackageName
++{
++ my $name = "";
++
++ my $conf_source; {
++ local (*IN);
++ open (IN, "<Makefile") || return $name;
++ seek (IN, 0, 0);
++ local $/; # slurp mode
++ $conf_source = <IN>;
++ close IN;
++ }
++
++ $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE = \[?([^\n\]]+)/m;
++
++ return $name if $name;
++}
++
++
+ sub preparation
+ {
+ $PO_DIR = $ARGV[0];
+@@ -1246,50 +1274,41 @@ sub schemas_merge_translations
+ my $short_string = $9 ? $9 : '';
+ my $long_string = $12 ? $12 : '';
+
+- print OUTPUT "$locale_start_spaces$c_default_block";
+-
+ $default_string =~ s/\s+/ /g;
+- $default_string = entity_decode($default_string);
+ $short_string =~ s/\s+/ /g;
+- $short_string = entity_decode($short_string);
+ $long_string =~ s/\s+/ /g;
+- $long_string = entity_decode($long_string);
+
+- for my $lang (sort keys %po_files_by_lang)
+- {
+- my $default_translation = $translations{$lang, $default_string};
+- my $short_translation = $translations{$lang, $short_string};
+- my $long_translation = $translations{$lang, $long_string};
+-
+- next if (!$default_translation && !$short_translation &&
+- !$long_translation);
+-
+- print OUTPUT "\n$locale_start_spaces<locale name=\"$lang\">";
++ print OUTPUT "$locale_start_spaces<gettext_domain>$MODULE</gettext_domain>";
+
++ print OUTPUT "$locale_start_spaces<locale name=\"C\">";
+ print OUTPUT "$default_spaces";
+-
+- if ($default_translation)
+- {
+- $default_translation = entity_encode($default_translation);
+- print OUTPUT "<default>$default_translation</default>";
++ if ($default_string) {
++ print OUTPUT "<default>$default_string</default>";
+ }
++ print OUTPUT "$short_spaces";
++ if ($short_string) {
++ print OUTPUT "<short>$short_string</short>";
++ }
++ print OUTPUT "$long_spaces";
++ if ($long_string) {
++ print OUTPUT "<long>$long_string</long>";
++ }
++ print OUTPUT "$locale_end_spaces</locale>";
+
+- print OUTPUT "$short_spaces";
++ $default_string = entity_decode($default_string);
++ $short_string = entity_decode($short_string);
++ $long_string = entity_decode($long_string);
+
+- if ($short_translation)
+- {
+- $short_translation = entity_encode($short_translation);
+- print OUTPUT "<short>$short_translation</short>";
+- }
++ for my $lang (sort keys %po_files_by_lang)
++ {
++ my $default_translation = $translations{$lang, $default_string};
+
+- print OUTPUT "$long_spaces";
++ next if (!$default_translation || ($default_translation eq $default_string));
+
+- if ($long_translation)
+- {
+- $long_translation = entity_encode($long_translation);
+- print OUTPUT "<long>$long_translation</long>";
+- }
++ $default_translation = entity_encode($default_translation);
+
++ print OUTPUT "\n$locale_start_spaces<locale name=\"$lang\">";
++ print OUTPUT "$default_spaces<default>$default_translation</default>";
+ print OUTPUT "$locale_end_spaces</locale>";
+ }
+ }
+diff -up intltool-0.40.6/tests/results/test.schemas intltool-0.40.6/tests/results/test