diff options
Diffstat (limited to 'packaging/schemas-merge.patch')
-rw-r--r-- | packaging/schemas-merge.patch | 153 |
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 |