[Libreoffice-commits] .: 209 commits - accessibility/prj accessibility/source avmedia/prj basctl/prj basic/prj bin/lo-commit-stat chart2/prj connectivity/prj crashrep/prj dbaccess/prj desktop/prj extensions/prj filter/prj forms/prj fpicker/prj framework/prj i18npool/inc i18npool/source instsetoo_native/util l10ntools/Executable_cfgex.mk l10ntools/Executable_gsicheck.mk l10ntools/Executable_helpex.mk l10ntools/Executable_localize.mk l10ntools/Executable_propex.mk l10ntools/Executable_renewpo.mk l10ntools/Executable_transex3.mk l10ntools/Executable_treex.mk l10ntools/Executable_uiex.mk l10ntools/Executable_ulfex.mk l10ntools/Executable_xrmex.mk l10ntools/inc l10ntools/Module_l10ntools.mk l10ntools/Package_scripts.mk l10ntools/prj l10ntools/scripts l10ntools/source l10ntools/StaticLibrary_transex.mk librelogo/Extension_librelogo.mk mysqlc/source nlpsolver/Extension_nlpsolver.mk nlpsolver/help nlpsolver/prj officecfg/prj readlicense_oo/CustomTarget_readme.mk readlicense_oo/prj reportdesign/pr j RepositoryFixes.mk Repository.mk scaddins/prj sccomp/prj scp2/prj scp2/source sc/prj sc/source sdext/Extension_presenter.mk sdext/source sd/prj sfx2/prj shell/prj solenv/gbuild solenv/inc starmath/prj svtools/prj svx/prj swext/Extension_wiki-publisher.mk swext/mediawiki swext/prj sw/prj sw/source sysui/util translations uui/prj wizards/prj xmlsecurity/prj

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Nov 20 07:15:26 PST 2012


 Repository.mk                                                              |    3 
 RepositoryFixes.mk                                                         |   16 
 accessibility/prj/build.lst                                                |    2 
 accessibility/source/standard/vclxaccessibletoolbox.cxx                    |    1 
 avmedia/prj/build.lst                                                      |    2 
 basctl/prj/build.lst                                                       |    2 
 basic/prj/build.lst                                                        |    2 
 bin/lo-commit-stat                                                         |   95 
 chart2/prj/build.lst                                                       |    2 
 connectivity/prj/build.lst                                                 |    2 
 crashrep/prj/build.lst                                                     |    2 
 dbaccess/prj/build.lst                                                     |    2 
 desktop/prj/build.lst                                                      |    2 
 extensions/prj/build.lst                                                   |    2 
 filter/prj/build.lst                                                       |    2 
 forms/prj/build.lst                                                        |    2 
 fpicker/prj/build.lst                                                      |    2 
 framework/prj/build.lst                                                    |    2 
 i18npool/inc/i18npool/mslangid.hxx                                         |  195 -
 i18npool/source/isolang/isolang.cxx                                        |  122 
 i18npool/source/isolang/mslangid.cxx                                       |   24 
 i18npool/source/languagetag/languagetag.cxx                                |    8 
 instsetoo_native/util/openoffice.lst                                       |   40 
 l10ntools/Executable_cfgex.mk                                              |    5 
 l10ntools/Executable_gsicheck.mk                                           |   45 
 l10ntools/Executable_helpex.mk                                             |    6 
 l10ntools/Executable_localize.mk                                           |   14 
 l10ntools/Executable_propex.mk                                             |   36 
 l10ntools/Executable_renewpo.mk                                            |   36 
 l10ntools/Executable_transex3.mk                                           |    5 
 l10ntools/Executable_treex.mk                                              |   37 
 l10ntools/Executable_uiex.mk                                               |    2 
 l10ntools/Executable_ulfex.mk                                              |    5 
 l10ntools/Executable_xrmex.mk                                              |    6 
 l10ntools/Module_l10ntools.mk                                              |    4 
 l10ntools/Package_scripts.mk                                               |    6 
 l10ntools/StaticLibrary_transex.mk                                         |    3 
 l10ntools/inc/export.hxx                                                   |   24 
 l10ntools/inc/helpmerge.hxx                                                |    2 
 l10ntools/inc/po.hxx                                                       |  129 
 l10ntools/inc/propmerge.hxx                                                |   37 
 l10ntools/inc/tagtest.hxx                                                  |  346 --
 l10ntools/inc/treemerge.hxx                                                |   38 
 l10ntools/prj/build.lst                                                    |    2 
 l10ntools/scripts/po2lo                                                    |   48 
 l10ntools/scripts/propex                                                   |   68 
 l10ntools/scripts/propex.bat                                               |    8 
 l10ntools/scripts/propmerge                                                |   88 
 l10ntools/scripts/update_tree.pl                                           |  394 --
 l10ntools/source/cfgmerge.cxx                                              |   95 
 l10ntools/source/export.cxx                                                |   99 
 l10ntools/source/export2.cxx                                               |  111 
 l10ntools/source/gsicheck.cxx                                              | 1051 ------
 l10ntools/source/helper.hxx                                                |   66 
 l10ntools/source/helpex.cxx                                                |  261 -
 l10ntools/source/helpmerge.cxx                                             |   60 
 l10ntools/source/lngex.cxx                                                 |  140 
 l10ntools/source/lngmerge.cxx                                              |    6 
 l10ntools/source/localize.cxx                                              |  145 
 l10ntools/source/merge.cxx                                                 |  171 -
 l10ntools/source/po.cxx                                                    |  869 +++++
 l10ntools/source/propex.cxx                                                |   45 
 l10ntools/source/propmerge.cxx                                             |  227 +
 l10ntools/source/renewpo.cxx                                               |  231 +
 l10ntools/source/tagtest.cxx                                               | 1570 ----------
 l10ntools/source/treemerge.cxx                                             |  305 +
 l10ntools/source/treex.cxx                                                 |   60 
 l10ntools/source/uimerge.cxx                                               |  113 
 l10ntools/source/xrmlex.l                                                  |   14 
 l10ntools/source/xrmmerge.cxx                                              |  131 
 librelogo/Extension_librelogo.mk                                           |    2 
 mysqlc/source/makefile.mk                                                  |    2 
 nlpsolver/Extension_nlpsolver.mk                                           |    2 
 nlpsolver/help/en/com.sun.star.comp.Calc.NLPSolver/tree_strings.xhp        |   29 
 nlpsolver/prj/build.lst                                                    |    2 
 officecfg/prj/build.lst                                                    |    2 
 readlicense_oo/CustomTarget_readme.mk                                      |    9 
 readlicense_oo/prj/build.lst                                               |    2 
 reportdesign/prj/build.lst                                                 |    2 
 sc/prj/build.lst                                                           |    2 
 sc/source/ui/vba/vbarange.cxx                                              |    2 
 scaddins/prj/build.lst                                                     |    2 
 sccomp/prj/build.lst                                                       |    2 
 scp2/prj/build.lst                                                         |    2 
 scp2/source/impress/module_ogltrans.ulf                                    |    1 
 sd/prj/build.lst                                                           |    2 
 sdext/Extension_presenter.mk                                               |    4 
 sdext/source/presenter/help/en-US/com.sun.PresenterScreen/tree_strings.xhp |   29 
 sfx2/prj/build.lst                                                         |    2 
 shell/prj/build.lst                                                        |    2 
 solenv/gbuild/AllLangResTarget.mk                                          |   18 
 solenv/gbuild/Configuration.mk                                             |   18 
 solenv/gbuild/ExtensionTarget.mk                                           |   98 
 solenv/gbuild/InstallModuleTarget.mk                                       |   13 
 solenv/gbuild/TargetLocations.mk                                           |    2 
 solenv/gbuild/UI.mk                                                        |   11 
 solenv/inc/minor.mk                                                        |    4 
 solenv/inc/rules.mk                                                        |   14 
 solenv/inc/tg_help.mk                                                      |    5 
 solenv/inc/unitools.mk                                                     |    1 
 starmath/prj/build.lst                                                     |    2 
 svtools/prj/build.lst                                                      |    2 
 svx/prj/build.lst                                                          |    2 
 sw/prj/build.lst                                                           |    2 
 sw/source/filter/ww8/ww8par.cxx                                            |    2 
 sw/source/ui/shells/shells.src                                             |    1 
 swext/Extension_wiki-publisher.mk                                          |    2 
 swext/mediawiki/help/tree_strings.xhp                                      |   29 
 swext/prj/build.lst                                                        |    2 
 sysui/util/checksize.pl                                                    |    2 
 translations                                                               |    2 
 uui/prj/build.lst                                                          |    2 
 wizards/prj/build.lst                                                      |    2 
 xmlsecurity/prj/build.lst                                                  |    2 
 114 files changed, 3100 insertions(+), 4936 deletions(-)

New commits:
commit 93d021a7803bc897b0f52928a7562bb2b9860566
Author: Petr Mladek <pmladek at suse.cz>
Date:   Tue Nov 20 16:10:58 2012 +0100

    lo-commit-stat: allow to generate more logs at once
    
    It takes ages to get bug summary from bugzilla => it is worh to
    generate normal and wiki logs at the same time. Why not produce
    all logs with one call
    
    Add --commits option. Also rename --wikibugs to --bugs-wiki.
    
    Use .wiki suffix for wiki logs. Also rename "commit-log" to "commits".
    It is enough to use ".log" as the suffix.
    
    Change-Id: I92bbc4d56a0ae9e23401be0677256059c777d712

diff --git a/bin/lo-commit-stat b/bin/lo-commit-stat
index 910d4ad..c64e125 100755
--- a/bin/lo-commit-stat
+++ b/bin/lo-commit-stat
@@ -209,12 +209,17 @@ sub get_branch_name($)
     return $branch;
 }
 
-sub open_log_file($$$$$)
+sub open_log_file($$$$$$)
 {
-    my ($log_dir, $log_prefix, $log_suffix, $top_dir, $branch_name) = @_;
+    my ($log_dir, $log_prefix, $log_suffix, $top_dir, $branch_name, $wiki) = @_;
 
-    my $logfilename = "$log_prefix-$branch_name-$log_suffix.log";
+    my $logfilename = "$log_prefix-$branch_name-$log_suffix";
     $logfilename = "$log_dir/$logfilename" if (defined $log_dir);
+    if ($wiki) {
+        $logfilename .= ".wiki";
+    } else {
+        $logfilename .= ".log";
+    }
 
     if (-f $logfilename) {
         print "WARNING: The log file already exists: $logfilename\n";
@@ -231,7 +236,7 @@ sub open_log_file($$$$$)
     return $log;
 }
 
-sub print_summary_in_stat($$$$$$)
+sub print_commit_summary($$$$$$)
 {
     my ($summary, $pmodule_title, $pbugs, $pauthors, $prefix, $log) = @_;
 
@@ -257,9 +262,9 @@ sub print_summary_in_stat($$$$$$)
     print $log $prefix, $summary, $bugs, $authors, "\n";
 }
 
-sub print_stat($$)
+sub print_commits($$$)
 {
-    my ($pdata, $log) = @_;
+    my ($pdata, $log, $wiki) = @_;
 
     foreach my $module ( sort { $a cmp $b } keys %{$pdata}) {
         # check if this module has any entries at all
@@ -271,7 +276,7 @@ sub print_stat($$)
             foreach my $id ( sort { lc $pdata->{$module}{$a}{'summary'} cmp lc $pdata->{$module}{$b}{'summary'} } keys %{$pdata->{$module}}) {
                 my $summary = $pdata->{$module}{$id}{'summary'};
                 if ($summary ne $old_summary) {
-                    print_summary_in_stat($old_summary, \$module_title, \%bugs, \%authors, "    + ", $log);
+                    print_commit_summary($old_summary, \$module_title, \%bugs, \%authors, "    + ", $log);
                     $old_summary = $summary;
                     %authors = ();
                     %bugs = ();
@@ -286,7 +291,7 @@ sub print_stat($$)
                 my $author = $pdata->{$module}{$id}{'author'}{'name'};
                 $authors{$author} = 1;
             }
-            print_summary_in_stat($old_summary, \$module_title, \%bugs, \%authors, "    + ", $log);
+            print_commit_summary($old_summary, \$module_title, \%bugs, \%authors, "    + ", $log);
         }
     }
 }
@@ -326,7 +331,7 @@ sub get_bug_name($$)
 
 sub print_bugs($$$)
 {
-    my ($pdata, $log, $convert_func) = @_;
+    my ($pdata, $log, $wiki) = @_;
 
     # associate bugs with their summaries and fixers
     my %bugs = ();
@@ -356,13 +361,14 @@ sub print_bugs($$$)
             $authors = " [" . join (", ", keys %{$bugs{$bug}{'author'}}) . "]";
         }
 
-        print $log $convert_func->($bug), " ", $summary, $authors, "\n";
+        $bug =~ s/(.*)\#(.*)/* {{$1|$2}}/ if ($wiki);
+        print $log $bug, " ", $summary, $authors, "\n";
     }
 }
 
-sub print_bugnumbers($$)
+sub print_bugnumbers($$$)
 {
-    my ($pdata, $log) = @_;
+    my ($pdata, $log, $wiki) = @_;
 
     # just collect bugs
     my %bugs = ();
@@ -377,6 +383,15 @@ sub print_bugnumbers($$)
     print $log join ("\n", sort { $a cmp $b } keys %bugs), "\n";
 }
 
+sub generate_log($$$$$$$$)
+{
+    my ($pdata, $print_func, $log_dir, $log_prefix, $log_suffix, $top_dir, $branch_name, $wiki) = @_;
+
+    my $log = open_log_file($log_dir, $log_prefix, $log_suffix, $top_dir, $branch_name, $wiki);
+    & {$print_func} ($pdata, $log, $wiki);
+    close $log;
+}
+
 ########################################################################
 # help
 
@@ -395,9 +410,10 @@ sub usage()
           "     --log-suffix=<string> suffix of the log file name; the result will be\n" .
           "                     commit-log-<branch>-<log-name-suffix>.log; the branch name\n" .
           "                     is detected automatically\n" .
-          "     --bugs          print just bug fixes\n" .
-          "     --wikibugs      print just bug fixes, use wiki markup\n" .
-          "     --bug-numbers   print just fixed bug numbers\n" .
+          "     --commits       generete log with all commits (default)\n" .
+          "     --bugs          generate log with bugzilla entries\n" .
+          "     --bugs-wiki     generate log with bugzilla entries, use wiki markup\n" .
+          "     --bugs-numbers  generate log with bugzilla numbers\n" .
           "     --rev-list      use \"git rev-list\" instead of \"git log\"; useful to check\n" .
           "                     differences between branches\n" .
           "      topdir         directory with the libreoffice/core clone\n" .
@@ -417,6 +433,7 @@ sub usage()
 
 
 my $module;
+my %generate_log = ();
 my $top_dir;
 my $log_prefix = "commit-log";
 my $log_dir;
@@ -429,6 +446,15 @@ my @git_args;
 my %data;
 my $print_mode = "normal";
 
+        $log_prefix = "bugfixes";
+        $print_mode = "bugs";
+        $log_prefix = "bugfixes";
+        $print_mode = "wikibugs";
+        $log_prefix = "bugnumbers";
+        $print_mode = "bugnumbers";
+
+
+
 foreach my $arg (@ARGV) {
     if ($arg eq '--help') {
         usage();
@@ -441,15 +467,14 @@ foreach my $arg (@ARGV) {
 	$log_suffix = "$1";
     } elsif ($arg =~ m/--log-dir=(.*)/) {
 	$log_dir = "$1";
+    } elsif ($arg eq '--commits') {
+        $generate_log{"commits"} = 1;
     } elsif ($arg eq '--bugs') {
-        $log_prefix = "bugfixes";
-        $print_mode = "bugs";
-    } elsif ($arg eq '--wikibugs') {
-        $log_prefix = "bugfixes";
-        $print_mode = "wikibugs";
-    } elsif ($arg eq '--bug-numbers') {
-        $log_prefix = "bugnumbers";
-        $print_mode = "bugnumbers";
+        $generate_log{"bugs"} = 1;
+    } elsif ($arg eq '--bugs-wiki' || $arg eq '--wikibugs') {
+        $generate_log{"bugs-wiki"} = 1;
+    } elsif ($arg eq '--bugs-numbers' || $arg eq '--bug-numbers') {
+        $generate_log{"bugs-numbers"} = 1;
     } elsif ($arg eq '--rev-list') {
         $git_command = "git rev-list --pretty=medium"
     } else {
@@ -461,7 +486,12 @@ foreach my $arg (@ARGV) {
     }
 }
 
-# ugly hack; we want only one module
+# default log
+if (%generate_log == 0) {
+    $generate_log{"commits"} = 1;
+}
+
+# we want only one module
 if ($module) {
     my $name = $module_dirname{$module};
     %module_dirname = ();
@@ -482,16 +512,7 @@ $branch_name = get_branch_name($top_dir);
 
 load_data(\%data, $top_dir, \%module_dirname, $branch_name, $git_command);
 
-$log = open_log_file($log_dir, $log_prefix, $log_suffix, $top_dir, $branch_name);
-if ( $print_mode eq "bugs" ) {
-    # identity-transform bug ids
-    print_bugs(\%data, $log, sub { return $_[0] } );
-} elsif ( $print_mode eq "wikibugs" ) {
-    # wiki-ize bug ids
-    print_bugs(\%data, $log, sub { $_[0] =~ s/(.*)\#(.*)/* {{$1|$2}}/; return $_[0] });
-} elsif ( $print_mode eq "bugnumbers" ) {
-    print_bugnumbers(\%data, $log);
-} else {
-    print_stat(\%data, $log);
-}
-close $log;
+generate_log(\%data, \&print_commits,    $log_dir, "commits",     $log_suffix, $top_dir, $branch_name, 0) if (defined $generate_log{"commits"});
+generate_log(\%data, \&print_bugs,       $log_dir, "bugs",        $log_suffix, $top_dir, $branch_name, 0) if (defined $generate_log{"bugs"});
+generate_log(\%data, \&print_bugs,       $log_dir, "bugs",        $log_suffix, $top_dir, $branch_name, 1) if (defined $generate_log{"bugs-wiki"});
+generate_log(\%data, \&print_bugnumbers, $log_dir, "bug-numbers", $log_suffix, $top_dir, $branch_name, 0) if (defined $generate_log{"bugs-numbers"});
commit 01db9edab12bbb8e820274903c1d58670488b8ed
Author: Petr Mladek <pmladek at suse.cz>
Date:   Tue Nov 20 16:08:13 2012 +0100

    bump product version to 4.0.0.0.alpha1+, release number to 1
    
    Change-Id: Iaf5af009ac86909bb293be4ab8ae3902215b3bfd

diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst
index 1cdf3f7..2f1ccf8 100644
--- a/instsetoo_native/util/openoffice.lst
+++ b/instsetoo_native/util/openoffice.lst
@@ -4,7 +4,7 @@ Globals
     {
         variables
         {
-            UREPACKAGEVERSION 4.0.0.0.alpha0
+            UREPACKAGEVERSION 4.0.0.0.alpha1
             URELAYERVERSION 1
             REFERENCEOOOMAJORMINOR 3.4
             UNIXBASISROOTNAME libreoffice4.0
@@ -50,12 +50,12 @@ LibreOffice
             PRODUCTVERSION 4.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION .0.0.alpha0
+            SHORT_PRODUCTEXTENSION .0.0.alpha1
             POSTVERSIONEXTENSION
             POSTVERSIONEXTENSIONUNIX
             BRANDPACKAGEVERSION 4.0
             USERDIRPRODUCTVERSION 4
-            ABOUTBOXPRODUCTVERSION 4.0.0.0.alpha0
+            ABOUTBOXPRODUCTVERSION 4.0.0.0.alpha1
             ABOUTBOXPRODUCTVERSIONSUFFIX +
             BASEPRODUCTVERSION 4.0
             PCPFILENAME libreoffice.pcp
@@ -65,7 +65,7 @@ LibreOffice
             FILEFORMATNAME OpenOffice.org
             FILEFORMATVERSION 1.0
             WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1
-            PACKAGEVERSION 4.0.0.0.alpha0
+            PACKAGEVERSION 4.0.0.0.alpha1
             PACKAGEREVISION {buildid}
             LICENSENAME LGPL
             GLOBALFILEGID gid_File_Lib_Vcl
@@ -102,13 +102,13 @@ LibreOffice_Dev
             PRODUCTVERSION 4.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION .0.0.alpha0
+            SHORT_PRODUCTEXTENSION .0.0.alpha1
             UNIXBASISROOTNAME lodev4.0
             POSTVERSIONEXTENSION
             POSTVERSIONEXTENSIONUNIX
             BRANDPACKAGEVERSION 4.0
             USERDIRPRODUCTVERSION 4
-            ABOUTBOXPRODUCTVERSION 4.0.0.0.alpha0
+            ABOUTBOXPRODUCTVERSION 4.0.0.0.alpha1
             ABOUTBOXPRODUCTVERSIONSUFFIX +
             BASEPRODUCTVERSION 4.0
             DEVELOPMENTPRODUCT 1
@@ -123,7 +123,7 @@ LibreOffice_Dev
             FILEFORMATNAME OpenOffice.org
             FILEFORMATVERSION 1.0
             WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1
-            PACKAGEVERSION 4.0.0.0.alpha0
+            PACKAGEVERSION 4.0.0.0.alpha1
             PACKAGEREVISION {buildid}
             LICENSENAME LGPL
             GLOBALFILEGID gid_File_Lib_Vcl
@@ -161,12 +161,12 @@ URE
         {
             PRODUCTNAME URE
             PRODUCTVERSION 4.0
-            PACKAGEVERSION 4.0.0.0.alpha0
+            PACKAGEVERSION 4.0.0.0.alpha1
             PACKAGEREVISION 1
             PRODUCTEXTENSION
             BRANDPACKAGEVERSION 4.0
             LONG_PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION .0.0.alpha0
+            SHORT_PRODUCTEXTENSION .0.0.alpha1
             LICENSENAME LGPL
             NOVERSIONINDIRNAME 1
             PCPFILENAME ure.pcp
@@ -198,11 +198,11 @@ LibreOffice_SDK
             PRODUCTVERSION 4.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION .0.0.alpha0
+            SHORT_PRODUCTEXTENSION .0.0.alpha1
             POSTVERSIONEXTENSION SDK
             POSTVERSIONEXTENSIONUNIX sdk
             BRANDPACKAGEVERSION 4.0
-            PACKAGEVERSION 4.0.0.0.alpha0
+            PACKAGEVERSION 4.0.0.0.alpha1
             PACKAGEREVISION {buildid}
             PACK_INSTALLED 1
             DMG_VOLUMEEXTENSION SDK
@@ -239,12 +239,12 @@ LibreOffice_Dev_SDK
             PRODUCTVERSION 4.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION .0.0.alpha0
+            SHORT_PRODUCTEXTENSION .0.0.alpha1
             UNIXBASISROOTNAME lodev4.0
             POSTVERSIONEXTENSION SDK
             POSTVERSIONEXTENSIONUNIX sdk
             BRANDPACKAGEVERSION 4.0
-            PACKAGEVERSION 4.0.0.0.alpha0
+            PACKAGEVERSION 4.0.0.0.alpha1
             PACKAGEREVISION {buildid}
             BASISPACKAGEPREFIX lodevbasis
             UREPACKAGEPREFIX lodev
@@ -286,11 +286,11 @@ LibreOffice_Test
             PRODUCTVERSION 4.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION .0.0.alpha0
+            SHORT_PRODUCTEXTENSION .0.0.alpha1
             POSTVERSIONEXTENSION TEST
             POSTVERSIONEXTENSIONUNIX test
             BRANDPACKAGEVERSION 4.0
-            PACKAGEVERSION 4.0.0.0.alpha0
+            PACKAGEVERSION 4.0.0.0.alpha1
             PACKAGEREVISION {buildid}
             PACK_INSTALLED 1
             DMG_VOLUMEEXTENSION TEST
@@ -327,12 +327,12 @@ LibreOffice_Dev_Test
             PRODUCTVERSION 4.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION .0.0.alpha0
+            SHORT_PRODUCTEXTENSION .0.0.alpha1
             UNIXBASISROOTNAME lodev4.0
             POSTVERSIONEXTENSION TEST
             POSTVERSIONEXTENSIONUNIX test
             BRANDPACKAGEVERSION 4.0
-            PACKAGEVERSION 4.0.0.0.alpha0
+            PACKAGEVERSION 4.0.0.0.alpha1
             PACKAGEREVISION {buildid}
             BASISPACKAGEPREFIX lodevbasis
             UREPACKAGEPREFIX lodev
@@ -373,12 +373,12 @@ OxygenOffice
             PRODUCTVERSION 4.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION .0.0.alpha0
+            SHORT_PRODUCTEXTENSION .0.0.alpha1
             POSTVERSIONEXTENSION
             POSTVERSIONEXTENSIONUNIX
             BRANDPACKAGEVERSION 4.0
             USERDIRPRODUCTVERSION 4
-            ABOUTBOXPRODUCTVERSION 4.0.0.0.alpha0
+            ABOUTBOXPRODUCTVERSION 4.0.0.0.alpha1
             ABOUTBOXPRODUCTVERSIONSUFFIX +
             BASEPRODUCTVERSION 4.0
             PCPFILENAME openoffice.pcp
@@ -388,7 +388,7 @@ OxygenOffice
             FILEFORMATNAME OpenOffice.org
             FILEFORMATVERSION 1.0
             WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1
-            PACKAGEVERSION 4.0.0.0.alpha0
+            PACKAGEVERSION 4.0.0.0.alpha1
             PACKAGEREVISION {buildid}
             LICENSENAME LGPL
             SERVICESPROJEKT 1
diff --git a/solenv/inc/minor.mk b/solenv/inc/minor.mk
index 2da4cf5..3b7d55a 100644
--- a/solenv/inc/minor.mk
+++ b/solenv/inc/minor.mk
@@ -1,6 +1,6 @@
 RSCVERSION=400
-RSCREVISION=400m1(Build:0)
-BUILD=0
+RSCREVISION=400m1(Build:1)
+BUILD=1
 LAST_MINOR=m0
 SOURCEVERSION=OOO400
 
commit bbd16d4c40dd0a5c7547ad84bb7950b9a488161f
Author: Andras Timar <atimar at suse.com>
Date:   Tue Nov 20 15:41:37 2012 +0100

    Updated core
    Project: translations  2333133e2c4422089ab79519effc359578bebddf
    add tudes po files

diff --git a/translations b/translations
index b2cf0bf..2333133 160000
--- a/translations
+++ b/translations
@@ -1 +1 @@
-Subproject commit b2cf0bf6fb5d098ed7997099349b74de8fb5e1f1
+Subproject commit 2333133e2c4422089ab79519effc359578bebddf
commit b134b6dd76843ba4423006bc22ecd527e98e683a
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Nov 20 15:07:35 2012 +0100

    slowly stabbing MsLangId::convert...() to death
    
    Change-Id: I0134593f8ba664b7a8e8a14f54485b96b749418d

diff --git a/i18npool/inc/i18npool/mslangid.hxx b/i18npool/inc/i18npool/mslangid.hxx
index 120d9c6..eba15ad 100644
--- a/i18npool/inc/i18npool/mslangid.hxx
+++ b/i18npool/inc/i18npool/mslangid.hxx
@@ -26,20 +26,10 @@
 #include "i18npool/lang.h"
 #include <com/sun/star/lang/Locale.hpp>
 
-// 0 := normal usage
-// 1 := force LanguageTag and make all conversion functions private to make the
-// compiler bail out
-#define I18NPOOL_FORCE_LANGUAGETAG 0
-
 /** Methods related to Microsoft language IDs. For details about MS-LANGIDs
     please see lang.h */
 class I18NISOLANG_DLLPUBLIC MsLangId
 {
-
-#if I18NPOOL_FORCE_LANGUAGETAG
-    friend class LanguageTag;
-#endif
-
 public:
 
     /// Create a LangID from a primary and a sublanguage.
@@ -93,73 +83,6 @@ public:
     static LanguageType getRealLanguage( LanguageType nLang );
 
 
-#if I18NPOOL_FORCE_LANGUAGETAG
-private:
-#endif
-
-    /** @short: Convert a LanguageType to a Locale, resolving LANGUAGE_SYSTEM.
-
-        @ATTENTION: A round trip convertLanguageToLocale(
-                convertLocaleToLanguage( ...)) is NOT possible because this
-                method substitutes LANGUAGE_SYSTEM and the like. If round-trip
-                is desired, you MUST use convertLanguageToLocale( ..., false)
-                instead.
-     */
-    static void convertLanguageToLocale( LanguageType nLang,
-            ::com::sun::star::lang::Locale & rLocale );
-
-
-    /** @short: Convert a LanguageType to a Locale with handling of
-                getRealLanguage().
-
-        @descr: If bResolveSystem==true don't use to convert a Language to a
-                Locale for file storage because it substitutes LANGUAGE_SYSTEM
-                and LANGUAGE_NONE and similar, use only at runtime! If
-                bResolveSystem==false a LANGUAGE_SYSTEM results in an empty
-                Locale.
-
-        @ATTENTION: A round trip convertLanguageToLocale(
-                convertLocaleToLanguage( ...)) using the default parameter is
-                NOT possible because this method
-                substitutes LANGUAGE_SYSTEM and the like. If round-trip is
-                desired, you MUST use convertLanguageToLocale( ..., false)
-                instead.
-      */
-    static ::com::sun::star::lang::Locale convertLanguageToLocale(
-            LanguageType nLang, bool bResolveSystem = true );
-
-
-    /** Convert a Locale to a LanguageType with handling of an empty language
-        name designating the SYSTEM language.
-      */
-    static LanguageType convertLocaleToLanguage( const ::com::sun::star::lang::Locale & rLocale );
-
-
-    /** Convert a LanguageType to a Locale, resolving LANGUAGE_SYSTEM, falling
-        back to a default locale if no exact match was found.
-     */
-    static ::com::sun::star::lang::Locale convertLanguageToLocaleWithFallback( LanguageType nLang );
-
-
-    /** Convert a Locale to a LanguageType with handling of an empty language
-        name designating the SYSTEM language, falling back to a default locale
-        if no exact match was found.
-      */
-    static LanguageType convertLocaleToLanguageWithFallback(
-            const ::com::sun::star::lang::Locale & rLocale );
-
-
-    /** To be used only by LanguageTag. */
-    I18NISOLANG_DLLPRIVATE static LanguageType lookupFallbackLanguage( LanguageType nLang );
-
-    /** To be used only by LanguageTag. */
-    I18NISOLANG_DLLPRIVATE static ::com::sun::star::lang::Locale lookupFallbackLocale(
-            const ::com::sun::star::lang::Locale & rLocale );
-
-
-#if I18NPOOL_FORCE_LANGUAGETAG
-public:
-#endif
     // TODO: refactor to LanguageTag? Used only in
     // i18npool/source/localedata/localedata.cxx
 
@@ -170,50 +93,12 @@ public:
     static ::com::sun::star::lang::Locale getFallbackLocale(
             const ::com::sun::star::lang::Locale & rLocale );
 
-#if I18NPOOL_FORCE_LANGUAGETAG
-private:
-#endif
-
-    // -----------------------------
-    // - ConvertLanguageToIsoNames -
-    // -----------------------------
-
-    static void convertLanguageToIsoNames( LanguageType nLang,
-            rtl::OUString& rLangStr, rtl::OUString& rCountry );
-    static void convertLanguageToIsoNames( LanguageType nLang,
-            rtl::OString& rLangStr, rtl::OString& rCountry );
-    static rtl::OUString convertLanguageToIsoString( LanguageType nLang,
-            sal_Unicode cSep = '-' );
-    static rtl::OString convertLanguageToIsoByteString( LanguageType nLang,
-            sal_Char cSep = '-' );
-
-    // -----------------------------
-    // - ConvertIsoNamesToLanguage -
-    // -----------------------------
-
-    static LanguageType convertIsoNamesToLanguage( const rtl::OUString& rLang,
-            const rtl::OUString& rCountry );
-    static LanguageType convertIsoNamesToLanguage( const rtl::OString& rLang,
-            const rtl::OString& rCountry );
-    static LanguageType convertIsoStringToLanguage(
-            const rtl::OUString& rString, sal_Unicode cSep = '-' );
-
-#if I18NPOOL_FORCE_LANGUAGETAG
-public:
-#endif
+
     // TODO: refactor to LanguageTag, used only in
     // i18npool/source/isolang/inunx.cxx to convert Unix locale string
 
     static LanguageType convertUnxByteStringToLanguage( const rtl::OString& rString );
 
-#if I18NPOOL_FORCE_LANGUAGETAG
-private:
-#endif
-
-
-#if I18NPOOL_FORCE_LANGUAGETAG
-public:
-#endif
 
     static LanguageType resolveSystemLanguageByScriptType( LanguageType nLang, sal_Int16 nType );
 
@@ -308,6 +193,79 @@ public:
 
 // ---------------------------------------------------------------------------
 
+    /** Encapsulated conversion methods used by LanguageTag and conversions,
+        not to be used by anything else.
+     */
+    class Conversion
+    {
+    private:
+
+        friend class LanguageTag;
+
+        friend ::com::sun::star::lang::Locale MsLangId::getFallbackLocale(
+                const ::com::sun::star::lang::Locale & rLocale );
+
+        friend LanguageType MsLangId::convertUnxByteStringToLanguage(
+                const rtl::OString& rString );
+
+
+        /** Convert a Locale to a LanguageType with handling of an empty
+            language name designating LANGUAGE_SYSTEM.
+          */
+        I18NISOLANG_DLLPRIVATE static LanguageType convertLocaleToLanguage(
+                const ::com::sun::star::lang::Locale & rLocale );
+
+        /** Used by convertLocaleToLanguage(Locale) */
+        I18NISOLANG_DLLPRIVATE static LanguageType convertIsoNamesToLanguage(
+                const rtl::OUString& rLang, const rtl::OUString& rCountry );
+
+
+        /** Used by convertUnxByteStringToLanguage(OString) */
+        I18NISOLANG_DLLPRIVATE static LanguageType convertIsoNamesToLanguage(
+                const rtl::OString& rLang, const rtl::OString& rCountry );
+
+
+        /** Convert a LanguageType to a Locale.
+
+            @param bResolveSystem
+                   If bResolveSystem==true, a LANGUAGE_SYSTEM is resolved.
+                   If bResolveSystem==false, a LANGUAGE_SYSTEM results in an
+                   empty Locale.
+          */
+        I18NISOLANG_DLLPRIVATE static ::com::sun::star::lang::Locale convertLanguageToLocale(
+                LanguageType nLang, bool bResolveSystem );
+
+        /** Convert a LanguageType to a Locale, resolving LANGUAGE_SYSTEM.
+
+            Used by convertLanguageToLocale(LanguageType,bool)
+          */
+        I18NISOLANG_DLLPRIVATE static void convertLanguageToLocale(
+                LanguageType nLang, ::com::sun::star::lang::Locale & rLocale );
+
+        /** Used by convertLanguageToLocale(LanguageType,Locale) */
+        I18NISOLANG_DLLPRIVATE static void convertLanguageToIsoNames(
+                LanguageType nLang, rtl::OUString& rLangStr, rtl::OUString& rCountry );
+
+
+        I18NISOLANG_DLLPRIVATE static LanguageType lookupFallbackLanguage( LanguageType nLang );
+
+        I18NISOLANG_DLLPRIVATE static ::com::sun::star::lang::Locale lookupFallbackLocale(
+                const ::com::sun::star::lang::Locale & rLocale );
+
+
+        /** Convert a LanguageType to a Locale, resolving LANGUAGE_SYSTEM,
+            falling back to a default locale if no exact match was found.
+
+            Used by getFallbackLocale(Locale)
+          */
+        I18NISOLANG_DLLPRIVATE static ::com::sun::star::lang::Locale convertLanguageToLocaleWithFallback(
+                LanguageType nLang );
+
+        /** Used by convertLanguageToLocaleWithFallback(LanguageType) */
+        I18NISOLANG_DLLPRIVATE static ::com::sun::star::lang::Locale lookupFallbackLocale(
+                LanguageType nLang );
+    };
+
 private:
 
     static LanguageType         nConfiguredSystemLanguage;
@@ -323,11 +281,6 @@ private:
     // Substitute LANGUAGE_SYSTEM for LANGUAGE_SYSTEM_DEFAULT and
     // LANGUAGE_PROCESS_OR_USER_DEFAULT, other values aren't touched.
     I18NISOLANG_DLLPRIVATE static inline LanguageType simplifySystemLanguages( LanguageType nLang );
-
-    // Several locale lookups with fall-back
-    I18NISOLANG_DLLPRIVATE static LanguageType lookupFallbackLanguage(
-            const ::com::sun::star::lang::Locale & rLocale );
-    I18NISOLANG_DLLPRIVATE static ::com::sun::star::lang::Locale lookupFallbackLocale( LanguageType nLang );
 };
 
 
diff --git a/i18npool/source/isolang/isolang.cxx b/i18npool/source/isolang/isolang.cxx
index 1605d9e..69e97dd 100644
--- a/i18npool/source/isolang/isolang.cxx
+++ b/i18npool/source/isolang/isolang.cxx
@@ -609,7 +609,7 @@ static IsoLangOtherEntry const aImplOtherEntries[] =
 // =======================================================================
 
 // static
-void MsLangId::convertLanguageToIsoNames( LanguageType nLang,
+void MsLangId::Conversion::convertLanguageToIsoNames( LanguageType nLang,
         rtl::OUString& rLangStr, rtl::OUString& rCountry )
 {
     if ( nLang == LANGUAGE_SYSTEM )
@@ -652,48 +652,6 @@ void MsLangId::convertLanguageToIsoNames( LanguageType nLang,
 
 // -----------------------------------------------------------------------
 
-// static
-void MsLangId::convertLanguageToIsoNames( LanguageType nLang,
-        rtl::OString& rLangStr, rtl::OString& rCountry )
-{
-    if ( nLang == LANGUAGE_SYSTEM )
-        nLang = MsLangId::getSystemLanguage();
-
-    // Search for LangID (in this table we find only defined ISO combinations)
-    const IsoLangEntry* pEntry = aImplIsoLangEntries;
-    do
-    {
-        if ( pEntry->mnLang == nLang )
-        {                          // avoid embedded \0 warning
-            rLangStr = rtl::OString( static_cast< const char* >( pEntry->maLangStr ));
-            rCountry = rtl::OString( static_cast< const char* >( pEntry->maCountry ));
-            return;
-        }
-        ++pEntry;
-    }
-    while ( pEntry->mnLang != LANGUAGE_DONTKNOW );
-
-    // Search for LangID if we didn't find a specific ISO combination.
-    // All entries in this table are allowed for mime specifications,
-    // but not defined ISO combinations.
-    const IsoLangNoneStdEntry* pNoneStdEntry = aImplIsoNoneStdLangEntries;
-    do
-    {
-        if ( pNoneStdEntry->mnLang == nLang )
-        {                          // avoid embedded \0 warning
-            rLangStr = rtl::OString( static_cast< const char* >( pNoneStdEntry->maLangStr ));
-            rCountry = rtl::OString( static_cast< const char* >( pNoneStdEntry->maCountry ));
-            return;
-        }
-        ++pNoneStdEntry;
-    }
-    while ( pNoneStdEntry->mnLang != LANGUAGE_DONTKNOW );
-
-    // not found
-    rLangStr = rtl::OString();
-    rCountry = rtl::OString();
-}
-
 // -----------------------------------------------------------------------
 
 static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry( LanguageType nLang )
@@ -749,14 +707,14 @@ static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry( LanguageType nLan
 }
 
 // static
-LanguageType MsLangId::lookupFallbackLanguage( LanguageType nLang )
+LanguageType MsLangId::Conversion::lookupFallbackLanguage( LanguageType nLang )
 {
     return lcl_lookupFallbackEntry( nLang).mnLang;
 }
 
 
 // static
-::com::sun::star::lang::Locale MsLangId::lookupFallbackLocale( LanguageType nLang )
+::com::sun::star::lang::Locale MsLangId::Conversion::lookupFallbackLocale( LanguageType nLang )
 {
     const MsLangId::IsoLangEntry& rEntry = lcl_lookupFallbackEntry( nLang);
     return ::com::sun::star::lang::Locale(
@@ -829,16 +787,9 @@ static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry(
     return aLastResortFallbackEntry;
 }
 
-// static
-LanguageType MsLangId::lookupFallbackLanguage(
-        const ::com::sun::star::lang::Locale & rLocale )
-{
-    return lcl_lookupFallbackEntry( rLocale).mnLang;
-}
-
 
 // static
-::com::sun::star::lang::Locale MsLangId::lookupFallbackLocale(
+::com::sun::star::lang::Locale MsLangId::Conversion::lookupFallbackLocale(
         const ::com::sun::star::lang::Locale & rLocale )
 {
     const MsLangId::IsoLangEntry& rEntry = lcl_lookupFallbackEntry( rLocale);
@@ -848,49 +799,10 @@ LanguageType MsLangId::lookupFallbackLanguage(
             rtl::OUString());
 }
 
-// -----------------------------------------------------------------------
-
-// static
-rtl::OUString MsLangId::convertLanguageToIsoString( LanguageType nLang,
-        sal_Unicode cSep )
-{
-    rtl::OUString   aLangStr;
-    rtl::OUString   aCountry;
-    convertLanguageToIsoNames( nLang, aLangStr, aCountry );
-    if ( !aCountry.isEmpty() )
-    {
-        rtl::OUStringBuffer aBuf( aLangStr);
-        aBuf.append( cSep );
-        aBuf.append( aCountry );
-        return aBuf.makeStringAndClear();
-    }
-    else
-        return aLangStr;
-}
-
-// -----------------------------------------------------------------------
-
-// static
-rtl::OString MsLangId::convertLanguageToIsoByteString( LanguageType nLang,
-        sal_Char cSep )
-{
-    rtl::OString  aLangStr;
-    rtl::OString  aCountry;
-    convertLanguageToIsoNames( nLang, aLangStr, aCountry );
-    if ( !aCountry.isEmpty() )
-    {
-        rtl::OStringBuffer aBuf( aLangStr);
-        aBuf.append( cSep );
-        aBuf.append( aCountry );
-        return aBuf.makeStringAndClear();
-    }
-    return aLangStr;
-}
-
 // =======================================================================
 
 // static
-LanguageType MsLangId::convertIsoNamesToLanguage( const rtl::OUString& rLang,
+LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( const rtl::OUString& rLang,
         const rtl::OUString& rCountry )
 {
     // language is lower case in table
@@ -992,7 +904,7 @@ LanguageType MsLangId::convertIsoNamesToLanguage( const rtl::OUString& rLang,
 // -----------------------------------------------------------------------
 
 // static
-LanguageType MsLangId::convertIsoNamesToLanguage( const rtl::OString& rLang,
+LanguageType MsLangId::Conversion::convertIsoNamesToLanguage( const rtl::OString& rLang,
         const rtl::OString& rCountry )
 {
     rtl::OUString aLang = OStringToOUString( rLang, RTL_TEXTENCODING_ASCII_US);
@@ -1002,26 +914,6 @@ LanguageType MsLangId::convertIsoNamesToLanguage( const rtl::OString& rLang,
 
 // -----------------------------------------------------------------------
 
-// static
-LanguageType MsLangId::convertIsoStringToLanguage(
-        const rtl::OUString& rString, sal_Unicode cSep )
-{
-    rtl::OUString   aLang;
-    rtl::OUString   aCountry;
-    sal_Int32  nSepPos = rString.indexOf( cSep );
-    if ( nSepPos >= 0 )
-    {
-        aLang = rString.copy( 0, nSepPos );
-        aCountry = rString.copy( nSepPos+1 );
-    }
-    else
-        aLang = rString;
-
-    return convertIsoNamesToLanguage( aLang, aCountry );
-}
-
-// -----------------------------------------------------------------------
-
 struct IsoLangGLIBCModifiersEntry
 {
     LanguageType  mnLang;
@@ -1102,7 +994,7 @@ LanguageType MsLangId::convertUnxByteStringToLanguage(
         while ( pGLIBCModifiersEntry->mnLang != LANGUAGE_DONTKNOW );
     }
 
-    return convertIsoNamesToLanguage( aLang, aCountry );
+    return Conversion::convertIsoNamesToLanguage( aLang, aCountry );
 }
 
 // -----------------------------------------------------------------------
diff --git a/i18npool/source/isolang/mslangid.cxx b/i18npool/source/isolang/mslangid.cxx
index 887b88b..405ce29 100644
--- a/i18npool/source/isolang/mslangid.cxx
+++ b/i18npool/source/isolang/mslangid.cxx
@@ -142,7 +142,7 @@ LanguageType MsLangId::resolveSystemLanguageByScriptType( LanguageType nLang, sa
 }
 
 // static
-void MsLangId::convertLanguageToLocale( LanguageType nLang,
+void MsLangId::Conversion::convertLanguageToLocale( LanguageType nLang,
         ::com::sun::star::lang::Locale & rLocale )
 {
     if (!rLocale.Variant.isEmpty())
@@ -152,7 +152,7 @@ void MsLangId::convertLanguageToLocale( LanguageType nLang,
 
 
 // static
-::com::sun::star::lang::Locale MsLangId::convertLanguageToLocale(
+::com::sun::star::lang::Locale MsLangId::Conversion::convertLanguageToLocale(
         LanguageType nLang, bool bResolveSystem )
 {
     ::com::sun::star::lang::Locale aLocale;
@@ -171,7 +171,7 @@ void MsLangId::convertLanguageToLocale( LanguageType nLang,
 
 
 // static
-LanguageType MsLangId::convertLocaleToLanguage(
+LanguageType MsLangId::Conversion::convertLocaleToLanguage(
         const ::com::sun::star::lang::Locale& rLocale )
 {
     // empty language => LANGUAGE_SYSTEM
@@ -188,19 +188,7 @@ LanguageType MsLangId::convertLocaleToLanguage(
 
 
 // static
-LanguageType MsLangId::convertLocaleToLanguageWithFallback(
-            const ::com::sun::star::lang::Locale & rLocale )
-{
-    // empty language => LANGUAGE_SYSTEM
-    if (rLocale.Language.isEmpty())
-        return lookupFallbackLanguage( LANGUAGE_SYSTEM);
-
-    return lookupFallbackLanguage( rLocale);
-}
-
-
-// static
-::com::sun::star::lang::Locale MsLangId::convertLanguageToLocaleWithFallback(
+::com::sun::star::lang::Locale MsLangId::Conversion::convertLanguageToLocaleWithFallback(
         LanguageType nLang )
 {
     return lookupFallbackLocale( MsLangId::getRealLanguage( nLang));
@@ -213,9 +201,9 @@ LanguageType MsLangId::convertLocaleToLanguageWithFallback(
 {
     // empty language => LANGUAGE_SYSTEM
     if (rLocale.Language.isEmpty())
-        return convertLanguageToLocaleWithFallback( LANGUAGE_SYSTEM);
+        return Conversion::convertLanguageToLocaleWithFallback( LANGUAGE_SYSTEM);
 
-    return lookupFallbackLocale( rLocale);
+    return Conversion::lookupFallbackLocale( rLocale);
 }
 
 // static
diff --git a/i18npool/source/languagetag/languagetag.cxx b/i18npool/source/languagetag/languagetag.cxx
index 1dcc6bf..07b494f 100644
--- a/i18npool/source/languagetag/languagetag.cxx
+++ b/i18npool/source/languagetag/languagetag.cxx
@@ -451,7 +451,7 @@ void LanguageTag::convertLocaleToLang()
         /* FIXME: this is temporary until code base is converted to not use
          * MsLangId::convert...() anymore. After that, proper new method has to
          * be implemented to allow ISO639_LANGUAGE_TAG and sript tag and such. */
-        mnLangID = MsLangId::convertLocaleToLanguage( maLocale);
+        mnLangID = MsLangId::Conversion::convertLocaleToLanguage( maLocale);
     }
     mbInitializedLangID = true;
 }
@@ -506,7 +506,7 @@ void LanguageTag::convertLangToLocale()
      * MsLangId::convert...() anymore. After that, proper new method has to be
      * implemented to allow ISO639_LANGUAGE_TAG and script tag and such. */
     // Resolve system here!
-    maLocale = MsLangId::convertLanguageToLocale( mnLangID, true);
+    maLocale = MsLangId::Conversion::convertLanguageToLocale( mnLangID, true);
     mbInitializedLocale = true;
 }
 
@@ -820,14 +820,14 @@ LanguageTag & LanguageTag::makeFallback()
         if (mbInitializedLangID)
         {
             LanguageType nLang1 = getLanguageType();
-            LanguageType nLang2 = MsLangId::lookupFallbackLanguage( nLang1);
+            LanguageType nLang2 = MsLangId::Conversion::lookupFallbackLanguage( nLang1);
             if (nLang1 != nLang2)
                 reset( nLang2);
         }
         else
         {
             const lang::Locale& rLocale1 = getLocale();
-            lang::Locale aLocale2( MsLangId::lookupFallbackLocale( rLocale1));
+            lang::Locale aLocale2( MsLangId::Conversion::lookupFallbackLocale( rLocale1));
             if (    rLocale1.Language != aLocale2.Language ||
                     rLocale1.Country  != aLocale2.Country ||
                     rLocale1.Variant  != aLocale2.Variant)
commit d5d7232fb5eac4a449cd35ab605075a30c7324d3
Author: Andras Timar <atimar at suse.com>
Date:   Tue Nov 20 15:09:35 2012 +0100

    fix readlicense_oo makefile, po file moved
    
    Change-Id: I1ff2085b773c3e46915140d816e940ddf048998f

diff --git a/readlicense_oo/CustomTarget_readme.mk b/readlicense_oo/CustomTarget_readme.mk
index 248e495..d653aa9 100644
--- a/readlicense_oo/CustomTarget_readme.mk
+++ b/readlicense_oo/CustomTarget_readme.mk
@@ -36,7 +36,7 @@ readlicense_oo_README_XRM := $(readlicense_oo_DIR)/readme.xrm
 $(readlicense_oo_DIR)/readme.xrm : \
 		$(SRCDIR)/readlicense_oo/docs/readme.xrm \
 		$(readlicense_XRMEXTARGET) \
-		$(foreach lang,$(filter-out en-US,$(gb_WITH_LANG)),$(gb_POLOCATION)/$(lang)/readlicense_oo/docs/readme.po) \
+		$(foreach lang,$(filter-out en-US,$(gb_WITH_LANG)),$(gb_POLOCATION)/$(lang)/readlicense_oo/docs.po) \
 		| $(readlicense_oo_DIR)/.dir
 	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),XRM,1)
 	$(call gb_Helper_abbreviate_dirs, \
commit 88ada48f9da15934ae5d110106f8d96ec4542fd8
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Nov 20 15:05:20 2012 +0100

    -Werror=trigraphs
    
    Change-Id: I47f285e94d9437e837a0aaa25c0682b4d2187974

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index 1be60ec..6ce5018 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -324,7 +324,7 @@ namespace
         UErrorCode nIcuErr = U_ZERO_ERROR;
         sal_uInt32 nSearchFlags = UREGEX_DOTALL | UREGEX_CASE_INSENSITIVE;
         OUString sLocaleText( OStringToOUString(rText,RTL_TEXTENCODING_UTF8) );
-        OUString sPattern( "<[/]??[a-z_-]+?(?:| +[a-z]+?=\".*?\") *[/]??>" );
+        OUString sPattern("<[/]\?\?[a-z_-]+?(?:| +[a-z]+?=\".*?\") *[/]\?\?>");
         UnicodeString sSearchPat(
             reinterpret_cast<const UChar*>(
                 sPattern.getStr()), sPattern.getLength() );
commit fa88b3717d58410f6318c520b0397000f86b9720
Merge: 54cd57e... a7261b4...
Author: Andras Timar <atimar at suse.com>
Date:   Tue Nov 20 15:03:34 2012 +0100

    Merge branch 'feature/killsdf'
    
    Conflicts:
    	desktop/prj/build.lst
    	helpcontent2
    	l10ntools/Executable_gsicheck.mk
    	l10ntools/Executable_uiex.mk
    	regexp/inc/regexp/reclass.hxx
    	solenv/gbuild/AllLangResTarget.mk
    
    Change-Id: I398f0cd9e7daefa8d2e04fd977d5bc2e9708169b

diff --cc desktop/prj/build.lst
index 70558b7,be8baca..cc591d2
--- a/desktop/prj/build.lst
+++ b/desktop/prj/build.lst
@@@ -1,3 -1,3 +1,3 @@@
- dt      desktop :    TRANSLATIONS:translations sfx2 stoc BOOST:boost svx DESKTOP:xmlhelp sal salhelper unoil officecfg offapi filter LIBXSLT:libxslt DESKTOP:helpcompiler NULL
 -dt      desktop :    sfx2 stoc BERKELEYDB:berkeleydb BOOST:boost svx DESKTOP:xmlhelp sal salhelper unoil officecfg offapi filter LIBXSLT:libxslt DESKTOP:helpcompiler NULL
++dt      desktop :    sfx2 stoc BOOST:boost svx DESKTOP:xmlhelp sal salhelper unoil officecfg offapi filter LIBXSLT:libxslt DESKTOP:helpcompiler NULL
  dt	desktop									usr1	-	all	dt_mkout NULL
  dt	desktop\prj						nmake	-	all	dt_prj NULL
diff --cc l10ntools/Executable_uiex.mk
index 064b207,de8d0c8..8a20512
--- a/l10ntools/Executable_uiex.mk
+++ b/l10ntools/Executable_uiex.mk
@@@ -30,7 -32,8 +30,9 @@@ $(eval $(call gb_Executable_use_externa
      libexslt \
      libxml2 \
      libxslt \
 -	icuuc \
 +    boost_headers \
++    icuuc \
+     $(if $(filter MSC,$(COM)),icuin,icui18n) \
  ))
  
  # vim: set noet sw=4 ts=4:
diff --cc l10ntools/StaticLibrary_transex.mk
index 4e77801,65b1f08..f7bed05
--- a/l10ntools/StaticLibrary_transex.mk
+++ b/l10ntools/StaticLibrary_transex.mk
@@@ -37,8 -37,13 +37,10 @@@ $(eval $(call gb_StaticLibrary_set_incl
      $$(INCLUDE) \
  ))
  
 -$(eval $(call gb_StaticLibrary_use_packages,transex,\
 -	sal_generated \
 -	sal_inc \
 -))
 +$(eval $(call gb_StaticLibrary_use_external,transex,boost_headers))
  
+ $(eval $(call gb_StaticLibrary_use_sdk_api,transex))
+ 
  $(eval $(call gb_StaticLibrary_add_exception_objects,transex,\
      l10ntools/source/export2 \
      l10ntools/source/merge \
diff --cc solenv/gbuild/AllLangResTarget.mk
index 477ec83,afa8027..78a775e
--- a/solenv/gbuild/AllLangResTarget.mk
+++ b/solenv/gbuild/AllLangResTarget.mk
@@@ -65,19 -68,10 +68,20 @@@ rm -rf $${MERGEINPUT
  endef
  
  $(call gb_SrsPartMergeTarget_get_target,%) : $(SRCDIR)/% $(gb_Helper_MISCDUMMY)  $(gb_SrsPartMergeTarget_TRANSEXTARGET)
- 	$(if $(SDF),$(call gb_SrsPartMergeTarget__command,$@,$*,$<),mkdir -p $(dir $@) && cp $< $@)
+ 	$(if $(filter $(words $(POFILES)),$(words $(wildcard $(POFILES)))),\
+ 		$(call gb_SrsPartMergeTarget__command,$@,$*,$<),\
+ 		mkdir -p $(dir $@) && cp $< $@)
  
 +define gb_SrsPartMergeTarget_SrsPartMergeTarget
- $(call gb_SrsPartMergeTarget__SrsPartMergeTarget_impl,$(1),$(if $(2),$(gb_SDFLOCATION)/$(dir $(1))localize.sdf))
- 
++$(call gb_SrsPartMergeTarget__SrsPartMergeTarget_impl,$(1),$(if $(2),$(foreach lang,$(filter-out en-US,$(gb_WITH_LANG)),$(gb_POLOCATION)/$(lang)/$(patsubst %/,%,$(dir $(1))).po)))
 +endef
 +
 +define gb_SrsPartMergeTarget__SrsPartMergeTarget_impl
- $(call gb_SrsPartMergeTarget_get_target,$(1)) : SDF := $(2)
++$(call gb_SrsPartMergeTarget_get_target,$(1)) : POFILES := $(2)
 +$(call gb_SrsPartMergeTarget_get_target,$(1)) : $(2)
 +
 +endef
 +
  # SrsPartTarget class
  
  # defined by platform
@@@ -470,4 -442,4 +474,4 @@@ $(foreach lang,$(gb_AllLangResTarget_LA
  
  endef
  
--# vim: set noet sw=4:
++# vim: set noet sw=4: 
commit a7261b424716463a7bb157f0d79084c868e10015
Author: Zolnai <zolnaitamas2000g at gmail.com>
Date:   Tue Nov 20 00:38:47 2012 +0100

    Updated core
    Project: help  a6e68151d44f357d5828d3a75193d67863226b12
    Fix dependacies in help

diff --git a/helpcontent2 b/helpcontent2
index 5574201..a6e6815 160000
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 55742016f74d1ec3a8f6f146457b34db675dac15
+Subproject commit a6e68151d44f357d5828d3a75193d67863226b12
commit 073ff5518f2e341dde7d7ce732cfecb029c85ce6
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Tue Nov 20 00:24:20 2012 +0100

    Generate qtz properties
    
    Qtz has no own po files so use one of
    configured langauge's po files (en-US excludex)
    Plus copy all properties files independently of
    localization
    
    Change-Id: Ica7ccb7d3111f2fc2b3bbde4b839cb564967130a

diff --git a/l10ntools/source/propmerge.cxx b/l10ntools/source/propmerge.cxx
index a858f44..689e931 100644
--- a/l10ntools/source/propmerge.cxx
+++ b/l10ntools/source/propmerge.cxx
@@ -182,7 +182,8 @@ void PropParser::Merge( const OString &rMergeSrc, const OString &rDestinationFil
 
     MergeDataFile aMergeDataFile( rMergeSrc, m_sSource, false );
 
-    if( aMergeDataFile.GetLanguages()[0] != m_sLang )
+    const std::vector<OString> aLanguages = aMergeDataFile.GetLanguages();
+    if( m_sLang != "qtz" && !aLanguages.empty() && aLanguages[0] != m_sLang )
     {
         std::cerr
             << "Propex error: given language conflicts with "
diff --git a/solenv/gbuild/ExtensionTarget.mk b/solenv/gbuild/ExtensionTarget.mk
index 63dbc4d..472b50d 100644
--- a/solenv/gbuild/ExtensionTarget.mk
+++ b/solenv/gbuild/ExtensionTarget.mk
@@ -234,6 +234,9 @@ endef
 # localize .properties file
 # source file is copied to $(WORKDIR)
 define gb_ExtensionTarget_localize_properties
+ifneq ($(filter-out en-US,$(gb_ExtensionTarget_ALL_LANGS)),)
+$(call gb_ExtensionTarget_localize_properties_onelang,$(1),$(subst en_US,qtz,$(2)),$(3),qtz,$(firstword $(filter-out en-US,$(gb_ExtensionTarget_ALL_LANGS))))
+endif
 $(foreach lang,$(gb_ExtensionTarget_ALL_LANGS),\
 	$(call gb_ExtensionTarget_localize_properties_onelang,$(1),$(subst en_US,$(subst -,_,$(lang)),$(2)),$(3),$(lang)))
 endef
@@ -242,9 +245,9 @@ define gb_ExtensionTarget_localize_properties_onelang
 $(call gb_ExtensionTarget_get_target,$(1)) : FILES += $(2)
 ifneq ($(filter-out en-US,$(4)),)
 $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : \
-	POFILE := $(gb_POLOCATION)/$(4)/$(patsubst /%/,%,$(subst $(SRCDIR),,$(dir $(3)))).po
+	POFILE := $(gb_POLOCATION)/$(or $(5),$(4))/$(patsubst /%/,%,$(subst $(SRCDIR),,$(dir $(3)))).po
 $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : \
-	$(gb_POLOCATION)/$(4)/$(patsubst /%/,%,$(subst $(SRCDIR),,$(dir $(3)))).po
+	$(gb_POLOCATION)/$(or $(5),$(4))/$(patsubst /%/,%,$(subst $(SRCDIR),,$(dir $(3)))).po
 endif
 $(call gb_ExtensionTarget_get_target,$(1)) : $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2)
 $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) \
@@ -253,13 +256,13 @@ $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $(3) \
 		$(gb_ExtensionTarget_PROPMERGETARGET)
 	$$(call gb_Output_announce,$(2),$(true),PRP,3)
 	$$(call gb_Helper_abbreviate_dirs, \
-		$(if $(filter-out en-US,$(4)), \
-			MERGEINPUT=`$(gb_MKTEMP)` && \
-			echo $$(POFILE) > $$$${MERGEINPUT} && \
-			mkdir -p $$(dir $$@) && \
-			$(gb_ExtensionTarget_PROPMERGECOMMAND) -i $$< -o $$@ -m $$$${MERGEINPUT} -l $(4) && \
-			rm -rf $$$${MERGEINPUT}, \
-			cp $$< $$@))
+		mkdir -p $$(dir $$@) && \
+		cp -f $$< $$@ )
+	$(if $(filter-out en-US,$(4)), \
+		MERGEINPUT=`$(gb_MKTEMP)` && \
+		echo $$(POFILE) > $$$${MERGEINPUT} && \
+		$(gb_ExtensionTarget_PROPMERGECOMMAND) -i $$< -o $$@ -m $$$${MERGEINPUT} -l $(4) && \
+		rm -rf $$$${MERGEINPUT})
 
 endef
 
commit 23ffae787b9b052748f7f3a6f67c4e2f8f2c9cbb
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Tue Nov 20 00:21:57 2012 +0100

    Reardme.xrm move up one directory
    
    just as the po file belong to it
    
    Change-Id: Ia5deea8816cbb5fc29669d6aa8c3c81472b0ed3f

diff --git a/readlicense_oo/CustomTarget_readme.mk b/readlicense_oo/CustomTarget_readme.mk
index 2871631..248e495 100644
--- a/readlicense_oo/CustomTarget_readme.mk
+++ b/readlicense_oo/CustomTarget_readme.mk
@@ -41,7 +41,7 @@ $(readlicense_oo_DIR)/readme.xrm : \
 	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),XRM,1)
 	$(call gb_Helper_abbreviate_dirs, \
         MERGEINPUT=`$(gb_MKTEMP)` && \
-        echo $(foreach lang,$(filter-out en-US,$(gb_WITH_LANG)),$(gb_POLOCATION)/$(lang)/readlicense_oo/docs/readme.po) > $${MERGEINPUT} && \
+        echo $(foreach lang,$(filter-out en-US,$(gb_WITH_LANG)),$(gb_POLOCATION)/$(lang)/readlicense_oo/docs.po) > $${MERGEINPUT} && \
 		$(readlicense_XRMEXCOMMAND) \
 			-p readlicense_oo \
 			-i $< \
commit 7429ab2e2caa49466a455ad3e2e04057524225d0
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Mon Nov 19 18:19:52 2012 +0100

    Use icu regex in l10ntools instead of i18nregexp
    
    Change-Id: I9062aafa2fefa26b7b1edf0440f4675b2f469e5d

diff --git a/l10ntools/Executable_cfgex.mk b/l10ntools/Executable_cfgex.mk
index 7804470..60b3166 100644
--- a/l10ntools/Executable_cfgex.mk
+++ b/l10ntools/Executable_cfgex.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,cfgex,\
 
 $(eval $(call gb_Executable_use_libraries,cfgex,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_unpacked,cfgex,boost))
@@ -50,4 +49,9 @@ $(eval $(call gb_Executable_add_exception_objects,cfgex,\
     l10ntools/source/cfgmerge \
 ))
 
+$(eval $(call gb_Executable_use_externals,cfgex,\
+    icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
+))
+
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/l10ntools/Executable_helpex.mk b/l10ntools/Executable_helpex.mk
index b7e6310..cd2469d 100644
--- a/l10ntools/Executable_helpex.mk
+++ b/l10ntools/Executable_helpex.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,helpex,\
 
 $(eval $(call gb_Executable_use_libraries,helpex,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_external,helpex,expat_utf8))
@@ -51,6 +50,8 @@ $(eval $(call gb_Executable_add_exception_objects,helpex,\
 
 $(eval $(call gb_Executable_use_externals,helpex,\
     libxml2 \
+    icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
 ))
 
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/l10ntools/Executable_localize.mk b/l10ntools/Executable_localize.mk
index e6e7f1f..a810b6c 100644
--- a/l10ntools/Executable_localize.mk
+++ b/l10ntools/Executable_localize.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,localize,\
 
 $(eval $(call gb_Executable_use_libraries,localize,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_static_libraries,localize,\
@@ -44,4 +43,9 @@ $(eval $(call gb_Executable_add_exception_objects,localize,\
     l10ntools/source/localize \
 ))
 
+$(eval $(call gb_Executable_use_externals,localize,\
+    icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
+))
+
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/l10ntools/Executable_propex.mk b/l10ntools/Executable_propex.mk
index d8dc16d..06080c6 100644
--- a/l10ntools/Executable_propex.mk
+++ b/l10ntools/Executable_propex.mk
@@ -17,7 +17,6 @@ $(eval $(call gb_Executable_set_include,propex,\
 
 $(eval $(call gb_Executable_use_libraries,propex,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_static_libraries,propex,\
@@ -29,4 +28,9 @@ $(eval $(call gb_Executable_add_exception_objects,propex,\
     l10ntools/source/propex \
 ))
 
+$(eval $(call gb_Executable_use_externals,propex,\
+    icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
+))
+
 # vim: set noet sw=4 ts=4:
diff --git a/l10ntools/Executable_renewpo.mk b/l10ntools/Executable_renewpo.mk
index 5aa036a..db84a41 100644
--- a/l10ntools/Executable_renewpo.mk
+++ b/l10ntools/Executable_renewpo.mk
@@ -18,7 +18,6 @@ $(eval $(call gb_Executable_set_include,renewpo,\
 
 $(eval $(call gb_Executable_use_libraries,renewpo,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_static_libraries,renewpo,\
@@ -29,4 +28,9 @@ $(eval $(call gb_Executable_add_exception_objects,renewpo,\
     l10ntools/source/renewpo \
 ))
 
+$(eval $(call gb_Executable_use_externals,renewpo,\
+    icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
+))
+
 # vim: set noet sw=4 ts=4:
diff --git a/l10ntools/Executable_transex3.mk b/l10ntools/Executable_transex3.mk
index 2d95906..d2b7952 100644
--- a/l10ntools/Executable_transex3.mk
+++ b/l10ntools/Executable_transex3.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,transex3,\
 
 $(eval $(call gb_Executable_use_libraries,transex3,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_add_scanners,transex3,\
@@ -50,4 +49,9 @@ $(eval $(call gb_Executable_add_exception_objects,transex3,\
     l10ntools/source/export \
 ))
 
+$(eval $(call gb_Executable_use_externals,transex3,\
+    icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
+))
+
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/l10ntools/Executable_treex.mk b/l10ntools/Executable_treex.mk
index 41af0a8..af77c71 100644
--- a/l10ntools/Executable_treex.mk
+++ b/l10ntools/Executable_treex.mk
@@ -17,7 +17,6 @@ $(eval $(call gb_Executable_set_include,treex,\
 
 $(eval $(call gb_Executable_use_libraries,treex,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_static_libraries,treex,\
@@ -31,6 +30,8 @@ $(eval $(call gb_Executable_add_exception_objects,treex,\
 
 $(eval $(call gb_Executable_use_externals,treex,\
     libxml2 \
+	icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/l10ntools/Executable_uiex.mk b/l10ntools/Executable_uiex.mk
index 520b010..de8d0c8 100644
--- a/l10ntools/Executable_uiex.mk
+++ b/l10ntools/Executable_uiex.mk
@@ -16,7 +16,6 @@ $(eval $(call gb_Executable_set_include,uiex,\
 
 $(eval $(call gb_Executable_use_libraries,uiex,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_unpacked,uiex,boost))
@@ -33,6 +32,8 @@ $(eval $(call gb_Executable_use_externals,uiex,\
     libexslt \
     libxml2 \
     libxslt \
+	icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/l10ntools/Executable_ulfex.mk b/l10ntools/Executable_ulfex.mk
index b975f5c..9a7040a 100644
--- a/l10ntools/Executable_ulfex.mk
+++ b/l10ntools/Executable_ulfex.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,ulfex,\
 
 $(eval $(call gb_Executable_use_libraries,ulfex,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_unpacked,ulfex,boost))
@@ -47,4 +46,9 @@ $(eval $(call gb_Executable_add_exception_objects,ulfex,\
     l10ntools/source/lngex \
 ))
 
+$(eval $(call gb_Executable_use_externals,ulfex,\
+    icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
+))
+
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/l10ntools/Executable_xrmex.mk b/l10ntools/Executable_xrmex.mk
index 73c56ab..ea0810f 100644
--- a/l10ntools/Executable_xrmex.mk
+++ b/l10ntools/Executable_xrmex.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,xrmex,\
 
 $(eval $(call gb_Executable_use_libraries,xrmex,\
     sal \
-    i18nregexp \
 ))
 
 $(eval $(call gb_Executable_use_unpacked,xrmex,boost))
@@ -52,6 +51,8 @@ $(eval $(call gb_Executable_add_exception_objects,xrmex,\
 
 $(eval $(call gb_Executable_use_externals,xrmex,\
     libxml2 \
+    icuuc \
+    $(if $(filter MSC,$(COM)),icuin,icui18n) \
 ))
 
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/l10ntools/prj/build.lst b/l10ntools/prj/build.lst
index 888b234..af0fdfe 100644
--- a/l10ntools/prj/build.lst
+++ b/l10ntools/prj/build.lst
@@ -1,3 +1,3 @@
-tr l10ntools : EXPAT:expat LIBXSLT:libxslt sal regexp NULL
+tr l10ntools : EXPAT:expat LIBXSLT:libxslt ICU:icu sal NULL
 tr	l10ntools					usr1	-	all	tr_mkout NULL
 tr	l10ntools\prj					nmake	-	all	tr_prj NULL
diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index 648634c..1be60ec 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -7,10 +7,6 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
-#include <com/sun/star/util/SearchOptions.hpp>
-#include <com/sun/star/util/SearchFlags.hpp>
-#include <com/sun/star/i18n/XExtendedTransliteration.hpp>
-#include <regexp/reclass.hxx>
 #include <rtl/ustring.hxx>
 
 #include <cstring>
@@ -21,12 +17,15 @@
 #include <string>
 
 #include <boost/crc.hpp>
+#include <unicode/regex.h>
 
 #include "po.hxx"
 
 #define POESCAPED OString("\\n\\t\\r\\\\\\\"")
 #define POUNESCAPED OString("\n\t\r\\\"")
 
+using namespace U_ICU_NAMESPACE;
+
 //Class GenPoEntry
 
 class GenPoEntry
@@ -317,61 +316,37 @@ namespace
             return lcl_UnEscapeText(rText,"\\n\\t\\r","\n\t\r");
     }
 
-    //Miminize the length of the regular expression result
-    static void lcl_Minimize(
-        const OUString& rText, Regexpr& io_rRegExp, re_registers& io_rRegs )
-    {
-        re_registers aPrevRegs;
-        const sal_Int32 nStart = io_rRegs.start[0];
-        do
-        {
-            const OUString sTemp = rText.copy(0,io_rRegs.end[0]-1);
-            memcpy(
-                static_cast<void*>(&aPrevRegs),
-                static_cast<void*>(&io_rRegs),
-                sizeof(re_registers));
-            memset(static_cast<void*>(&io_rRegs), 0, sizeof(re_registers));
-            io_rRegExp.set_line(sTemp.getStr(),sTemp.getLength());
-            io_rRegExp.re_search(&io_rRegs,nStart);
-        } while(io_rRegs.num_of_match);
-
-        memcpy(static_cast<void*>(&io_rRegs),static_cast<void*>(&aPrevRegs),
-               sizeof(re_registers));
-        io_rRegExp.set_line(rText.getStr(),rText.getLength());
-    }
-
     //Find all special tag in a string using a regular expression
     static void lcl_FindAllTag(
         const OString& rText,std::vector<OString>& o_vFoundTags )
     {
-        ::com::sun::star::util::SearchOptions aOptions;
-        aOptions.algorithmType =
-            ::com::sun::star::util::SearchAlgorithms_REGEXP;
-        aOptions.searchFlag =
-            ::com::sun::star::util::SearchFlags::NORM_WORD_ONLY;
-        aOptions.searchString = "<[/]?[a-z_\\-]+(| +[a-z]+=\".*\") *[/]?>";
-        ::com::sun::star::uno::Reference<
-             ::com::sun::star::i18n::XExtendedTransliteration > xTrans;
-
-        Regexpr aRegExp(aOptions,xTrans);
-        const OUString sTemp(OStringToOUString(rText,RTL_TEXTENCODING_UTF8));
-        aRegExp.set_line(sTemp.getStr(),sTemp.getLength());
-
-        re_registers aRegs;
-        memset(static_cast<void*>(&aRegs), 0, sizeof(re_registers));
-        sal_Int32 nStart = 0;
-        o_vFoundTags.resize(0);
-        aRegExp.re_search(&aRegs,nStart);
-        while(aRegs.num_of_match)
+
+        UErrorCode nIcuErr = U_ZERO_ERROR;
+        sal_uInt32 nSearchFlags = UREGEX_DOTALL | UREGEX_CASE_INSENSITIVE;
+        OUString sLocaleText( OStringToOUString(rText,RTL_TEXTENCODING_UTF8) );
+        OUString sPattern( "<[/]??[a-z_-]+?(?:| +[a-z]+?=\".*?\") *[/]??>" );
+        UnicodeString sSearchPat(
+            reinterpret_cast<const UChar*>(
+                sPattern.getStr()), sPattern.getLength() );
+        UnicodeString sSource(
+            reinterpret_cast<const UChar*>(
+                sLocaleText.getStr()), sLocaleText.getLength() );
+
+        RegexMatcher aRegexMatcher( sSearchPat, nSearchFlags, nIcuErr );
+        aRegexMatcher.reset( sSource );
+        int64_t nStartPos = 0;
+        while( aRegexMatcher.find(nStartPos, nIcuErr) &&
+            nIcuErr == U_ZERO_ERROR )
         {
-            lcl_Minimize(sTemp,aRegExp,aRegs);
+            UnicodeString sMatch =
+                aRegexMatcher.group(nIcuErr);
             o_vFoundTags.push_back(
                 OUStringToOString(
-                    sTemp.copy(aRegs.start[0],aRegs.end[0]-aRegs.start[0]),
+                    OUString(
+                        reinterpret_cast<const sal_Unicode*>(
+                            sMatch.getBuffer()),sMatch.length()),
                     RTL_TEXTENCODING_UTF8));
-            nStart = aRegs.end[0];
-            memset(static_cast<void*>(&aRegs), 0, sizeof(re_registers));
-            aRegExp.re_search(&aRegs,nStart);
+            nStartPos = aRegexMatcher.start(nIcuErr)+1;
         }
     }
 
commit c82935d52db04230c77b4a6df7dda07507b34805
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Mon Nov 19 15:29:59 2012 +0100

    Extend localization to mysqlc
    
    Change-Id: If67b4991dec8c20d02d41032923bbd5945a5704a

diff --git a/mysqlc/source/makefile.mk b/mysqlc/source/makefile.mk
index c36e836..232bc1f 100644
--- a/mysqlc/source/makefile.mk
+++ b/mysqlc/source/makefile.mk
@@ -236,7 +236,7 @@ $(COMPONENT_DESCRIPTIONS_PACKDEP) : $(DESCRIPTION)
 $(DESCRIPTION_SRC): description.xml
     +-$(RM) $@
 .IF "$(WITH_LANG)" != ""
-    $(XRMEX) -p $(PRJNAME) -i $< -o $@ -m $(LOCALIZESDF) -l all
+    $(XRMEX) -p $(PRJNAME) -i $< -o $@ -m $(mktmp $(foreach,lang,$(subst,en-US, $(WITH_LANG)) $(SRCDIR)$/newtrans.1.0/source/$(lang)/$(PRJNAME)$/$(PATH_IN_MODULE).po)) -l all
     $(SED) "s/#VERSION#/$(EXTENSION_VERSION)/" < $@ > $@.new
     mv $@.new $@
     @$(COPY) $(@:d)/description-*.txt $(EXTENSIONDIR)
commit 3f469dd69c2eb9d8f193da7f88d05719762b600c
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 22:49:36 2012 +0100

    Fix some encoding problem in treemerge
    
    Change-Id: I275ccba8f07ccaba1ead0ad83a382d3ad19c722a

diff --git a/l10ntools/source/treemerge.cxx b/l10ntools/source/treemerge.cxx
index 8555c8f..622564c 100644
--- a/l10ntools/source/treemerge.cxx
+++ b/l10ntools/source/treemerge.cxx
@@ -146,7 +146,9 @@ namespace
                                 replaceAll("$[officeversion]","%PRODUCTVERSION");
                     xmlNodeSetContent(
                         pReturn,
-                        reinterpret_cast<const xmlChar*>( sNewTitle.getStr() ));
+                        xmlEncodeSpecialChars( NULL,
+                            reinterpret_cast<const xmlChar*>(
+                                sNewTitle.getStr() )));
                     xmlFree( sTitle );
                     break;
                 }
commit b4cbfaa0d84513415d39965dc300b454e6fedd08
Author: Andras Timar <atimar at suse.com>
Date:   Sun Nov 18 22:29:58 2012 +0100

    Updated core
    Project: help  55742016f74d1ec3a8f6f146457b34db675dac15
    remove obsoleted part from makefile

diff --git a/helpcontent2 b/helpcontent2
index c96494d..5574201 160000
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit c96494d43ebda1848c55a31ef187646783dead00
+Subproject commit 55742016f74d1ec3a8f6f146457b34db675dac15
commit 4a91105b826dea43a43ec03a64a8c28f1aa72155
Author: Ztamas <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 16:21:51 2012 +0100

    Updated core
    Project: help  c96494d43ebda1848c55a31ef187646783dead00
    Localize tree files in help

diff --git a/helpcontent2 b/helpcontent2
index 7bb6ef6..c96494d 160000
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 7bb6ef60f6486e143fda08cc1527f5eb71c86b09
+Subproject commit c96494d43ebda1848c55a31ef187646783dead00
commit 8d1775f2e581119812b2e0a04d5f1441cc47b969
Author: Andras Timar <atimar at suse.com>
Date:   Sun Nov 18 19:44:00 2012 +0100

    fix makefile
    
    Change-Id: I72de89aed6ac8901ee2b633c0236191ef3cfb7c1

diff --git a/solenv/gbuild/Configuration.mk b/solenv/gbuild/Configuration.mk
index 1d9ceac..95f20e3 100644
--- a/solenv/gbuild/Configuration.mk
+++ b/solenv/gbuild/Configuration.mk
@@ -257,7 +257,7 @@ $(call gb_Helper_abbreviate_dirs,\
 	mkdir -p $(dir $(1)) && \
 	$(gb_XcuMergeTarget_CFGEXCOMMAND) \
 		-p $(firstword $(subst /, ,$(2))) \
-		-i $(call gb_Helper_symlinked_native,$(3)) \
+		-i $(3) \
 		-o $(1) \
 		-m $${MERGEINPUT} \
 		-l all) && \
commit 06d5579c9291b6061ee89eed8f505f436375e15d
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 18:20:38 2012 +0100

    Localize tree files in help
    
    -Treex works well when po is not exist, send a
     warning but make en-US tree-s.
    
    Change-Id: Ib2b790742c022211a8d250b66891cef045941398

diff --git a/helpcontent2 b/helpcontent2
index 23d7515..7bb6ef6 160000
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 23d7515757534fca7d50e1201745586adde4b8f6
+Subproject commit 7bb6ef60f6486e143fda08cc1527f5eb71c86b09
diff --git a/l10ntools/source/treemerge.cxx b/l10ntools/source/treemerge.cxx
index 12e931c..8555c8f 100644
--- a/l10ntools/source/treemerge.cxx
+++ b/l10ntools/source/treemerge.cxx
@@ -279,8 +279,8 @@ void TreeParser::Merge(
     {
         MergeDataFile aMergeDataFile(
             rMergeSrc, static_cast<OString>( m_pSource->name ), false );
-
-        if( aMergeDataFile.GetLanguages()[0] != m_sLang )
+        const std::vector<OString> vLanguages = aMergeDataFile.GetLanguages();
+        if( !vLanguages.empty() && vLanguages[0] != m_sLang )
         {
             std::cerr
                 << "Treex error: given language conflicts with "
@@ -288,7 +288,6 @@ void TreeParser::Merge(
                 << m_sLang.getStr() << " - " << rMergeSrc.getStr() << std::endl;
             return;
         }
-
         lcl_MergeLevel(
             m_pSource, pRootNode, (const xmlChar *)("help_section"),
             &aMergeDataFile, m_sLang, rXhpRoot );
diff --git a/solenv/inc/unitools.mk b/solenv/inc/unitools.mk
index 863c4ad..bbd51bf 100644
--- a/solenv/inc/unitools.mk
+++ b/solenv/inc/unitools.mk
@@ -33,6 +33,7 @@ CFGEX*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/cfgex
 AUTODOC*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/autodoc
 LOCALIZE*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/localize
 GSICHECK*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/gsicheck
+TREEX*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/treex
 
 .IF "$(XSLTPROC)"==""
 .IF "$(SYSTEM_LIBXSLT)"!="YES"
commit 5d84ae59e70b8b1017959a68934ac1f455ce2b13
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 15:24:44 2012 +0100

    Localize xhp files in help
    
    Make helpex to be able to work with more xhp files at one time
     - Add new input flag "-mi" which means multiinput
     - Input is a file include pathes to xhp files
       (these are in the same directory so their strings
       are in the same po file)
     - Output is a file include pathes to dest xhp files
     - Merge reads all po entry from the specified po file
       if MergeDataFile ctor's second parameter is empty
    
    Rewrite makefiles to work with new syntax
    Plus Delete some unused code
    
    Change-Id: I5eb12d7a6f5e9cda378788410d3c50052eb752b8

diff --git a/l10ntools/inc/helpmerge.hxx b/l10ntools/inc/helpmerge.hxx
index 34dfdc7..401f839 100644
--- a/l10ntools/inc/helpmerge.hxx
+++ b/l10ntools/inc/helpmerge.hxx
@@ -55,8 +55,6 @@ public:
 /// point to existing files.
     bool Merge( const rtl::OString &rSDFFile_in, const rtl::OString &rDestinationFile_in ,
         const rtl::OString& sLanguage , MergeDataFile& aMergeDataFile );
-    bool Merge( const rtl::OString &rSDFFile, const rtl::OString &rPathX , const rtl::OString &rPathY , bool bISO
-        , const std::vector<rtl::OString>& aLanguages , MergeDataFile& aMergeDataFile , bool bCreateDir );
 
 private:
     rtl::OString GetOutpath( const rtl::OString& rPathX , const rtl::OString& sCur , const rtl::OString& rPathY );
diff --git a/l10ntools/source/helpex.cxx b/l10ntools/source/helpex.cxx
index 8dca205..7ab581a 100644
--- a/l10ntools/source/helpex.cxx
+++ b/l10ntools/source/helpex.cxx
@@ -20,6 +20,9 @@
 #include "sal/config.h"
 
 #include <iostream>
+#include <fstream>
+#include <string>
+#include <cstring>
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -30,24 +33,87 @@
 
 #ifndef TESTDRIVER
 
+void WriteUsage()
+{
+    std::cout
+        << "Syntax: Helpex [-p Prj] [-r Root] -[m]i FileIn -o FileOut"
+        << " [-m DataBase] [-l l1,l2,...]\n"
+        << " Prj: Project\n"
+        << " Root: Path to project root (../.. etc.)\n"
+        << " FileIn + i:   Source file (*.xhp)\n"
+        << " FileIn + -mi: File including pathes of source files"
+        << " (only for merge)"
+        << " FileOut:  Destination file (*.*) or files (in case of -mi)\n"
+        << " DataBase: Mergedata (*.po)\n"
+        << " -l: Restrict the handled languages; l1, l2, ... are elements of"
+        << " (de, en-US, ...)\n";
+}
+
 SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
+
+    bool bMultiMerge = false;
+    for (int nIndex = 1; nIndex != argc; ++nIndex)
+    {
+        if (std::strcmp(argv[nIndex], "-mi") == 0)
+        {
+            argv[nIndex][1] = 'i';
+            argv[nIndex][2] = '\0';
+            bMultiMerge = true;
+            break;
+        }
+    }
+
     HandledArgs aArgs;
-    if ( !Export::handleArguments( argc, argv, aArgs) ) {
-        Export::writeUsage("helpex","xhp");
+    if ( !Export::handleArguments( argc, argv, aArgs) )
+    {
+        WriteUsage();
         return 1;
     }
-    //sal_uInt32 startfull = Export::startMessure();
     bool hasNoError = true;
 
-    HelpParser aParser( aArgs.m_sInputFile );
     if ( aArgs.m_bMergeMode )
     {
-        //sal_uInt64 startreadloc = Export::startMessure();
-        MergeDataFile aMergeDataFile( aArgs.m_sMergeSrc, aArgs.m_sInputFile, false );
-        hasNoError = aParser.Merge( aArgs.m_sMergeSrc, aArgs.m_sOutputFile , Export::sLanguages , aMergeDataFile );
+        if( bMultiMerge )
+        {
+            std::ifstream aInput( aArgs.m_sInputFile.getStr() );
+            if( !aInput.is_open() )
+            {
+                std::cerr << "Helpex error: cannot open input file\n";
+                return 1;
+            }
+            MergeDataFile aMergeDataFile( aArgs.m_sMergeSrc, OString(), false);
+            std::string sTemp;
+            aInput >> sTemp;
+            while( !aInput.eof() )
+            {
+                const OString sXhpFile( sTemp.data(), sTemp.length() );
+                HelpParser aParser( sXhpFile );
+                const OString sOutput(
+                    aArgs.m_sOutputFile +
+                    sXhpFile.copy( sXhpFile.lastIndexOf("/") ));
+                if( !aParser.Merge( aArgs.m_sMergeSrc, sOutput,
+                    Export::sLanguages, aMergeDataFile ))
+                {
+                    hasNoError = false;
+                }
+                aInput >> sTemp;
+            }
+            aInput.close();
+        }
+        else
+        {
+            HelpParser aParser( aArgs.m_sInputFile );
+            MergeDataFile aMergeDataFile(
+                aArgs.m_sMergeSrc, aArgs.m_sInputFile, false );
+            hasNoError =
+                aParser.Merge(
+                    aArgs.m_sMergeSrc, aArgs.m_sOutputFile,
+                    Export::sLanguages , aMergeDataFile );
+        }
     }
     else
     {
+        HelpParser aParser( aArgs.m_sInputFile );
         hasNoError =
             aParser.CreateSDF(
                 aArgs.m_sOutputFile, aArgs.m_sPrj, aArgs.m_sPrjRoot,
diff --git a/l10ntools/source/helpmerge.cxx b/l10ntools/source/helpmerge.cxx
index 8764935..68f7453 100644
--- a/l10ntools/source/helpmerge.cxx
+++ b/l10ntools/source/helpmerge.cxx
@@ -227,51 +227,6 @@ void HelpParser::parse_languages( std::vector<rtl::OString>& aLanguages , MergeD
 
 }
 
-bool HelpParser::Merge(
-    const rtl::OString &rSDFFile, const rtl::OString &rPathX , const rtl::OString &rPathY , bool bISO ,
-    const std::vector<rtl::OString>& aLanguages , MergeDataFile& aMergeDataFile , bool bCreateDir )
-{
-
-
-    (void) rSDFFile ;
-    bool hasNoError = true;
-    SimpleXMLParser aParser;
-    rtl::OUString sXmlFile(
-        rtl::OStringToOUString(sHelpFile, RTL_TEXTENCODING_ASCII_US));
-    //TODO: explicit BOM handling?
-
-    XMLFile* xmlfile = aParser.Execute( sXmlFile, new XMLFile( rtl::OUString('0') ) );
-
-    if( xmlfile == NULL)
-    {
-        printf("%s\n", rtl::OUStringToOString(aParser.GetError().sMessage, RTL_TEXTENCODING_UTF8).getStr());
-        exit(-1);
-    }
-
-    xmlfile->Extract();
-
-    rtl::OString sCur;
-    for( unsigned int n = 0; n < aLanguages.size(); n++ ){
-        sCur = aLanguages[ n ];
-
-        rtl::OString sFilepath;
-        if( bISO )  sFilepath = GetOutpath( rPathX , sCur , rPathY );
-        else        sFilepath = rPathX;
-        if( bCreateDir )
-            MakeDir(sFilepath);
-
-        XMLFile* file = new XMLFile( *xmlfile );
-        sFilepath += sHelpFile;
-        hasNoError = MergeSingleFile( file , aMergeDataFile , sCur , sFilepath );
-        delete file;
-
-        if( !hasNoError ) return false;         // Stop on error
-     }
-
-    delete xmlfile;
-    return hasNoError;
-}
-
 bool HelpParser::MergeSingleFile( XMLFile* file , MergeDataFile& aMergeDataFile , const rtl::OString& sLanguage ,
                                   rtl::OString const & sPath )
 {
diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx
index 80188f5..73bd8dd 100644
--- a/l10ntools/source/merge.cxx
+++ b/l10ntools/source/merge.cxx
@@ -150,8 +150,7 @@ sal_Bool MergeData::operator==( ResData *pData )
 //
 
 MergeDataFile::MergeDataFile(
-    const rtl::OString &rFileName,
-    const rtl::OString &rFile,
+    const rtl::OString &rFileName, const rtl::OString &rFile,
     bool bCaseSensitive)
 {
     std::ifstream aInputStream( rFileName.getStr() );
@@ -167,6 +166,7 @@ MergeDataFile::MergeDataFile(
     {
         const OString sHack("HACK");
         const OString sFileName( lcl_NormalizeFilename(rFile) );
+        const bool bReadAll = sFileName.isEmpty();
         PoIfstream aPoInput;
         aPoInput.open( OString(sPoFileName.data(), sPoFileName.length()) );
         if ( !aPoInput.isOpen() )
@@ -212,8 +212,8 @@ MergeDataFile::MergeDataFile(
             {
                 return;
             }
-        } while( !aPoInput.eof() && aNextPo.getSourceFile() != sFileName );
-        while( !aPoInput.eof() && aNextPo.getSourceFile() == sFileName )
+        } while( !aPoInput.eof() && aNextPo.getSourceFile() != sFileName && !bReadAll );
+        while( !aPoInput.eof() && (aNextPo.getSourceFile() == sFileName || bReadAll ))
         {
             PoEntry aActPo( aNextPo );
 
@@ -262,7 +262,7 @@ MergeDataFile::MergeDataFile(
             InsertEntry(
                 aActPo.getResourceType(), aActPo.getGroupId(),
                 aActPo.getLocalId(), sHack, sLang, sText,
-                sQHText, sTitle, sFileName, bCaseSensitive );
+                sQHText, sTitle, aActPo.getSourceFile(), bCaseSensitive );
 
             if( bFirstLang )
             {
@@ -271,7 +271,8 @@ MergeDataFile::MergeDataFile(
                     aActPo.getResourceType(), aActPo.getGroupId(),
                     aActPo.getLocalId(), sHack, "qtz",
                     sQTZText + "||" + sExText, sQTZQHText + "||" + sExQHText,
-                    sQTZTitle + "||" + sExTitle, sFileName, bCaseSensitive );
+                    sQTZTitle + "||" + sExTitle, aActPo.getSourceFile(),
+                    bCaseSensitive );
             }
         }
         aPoInput.close();
diff --git a/solenv/inc/tg_help.mk b/solenv/inc/tg_help.mk
index c67e04a..f87953a 100644
--- a/solenv/inc/tg_help.mk
+++ b/solenv/inc/tg_help.mk
@@ -54,7 +54,10 @@ $(XHPDEST)$/{$(aux_alllangiso)}$/$(SHELL_PACKAGE)$/%.xhp :| %.xhp
 $(HELP_OUT)$/$(TARGET).done : $(HLANGXHPFILES)
 .IF "$(WITH_LANG)"!=""
     @echo Localizing help files...
-    $(COMMAND_ECHO)$(AUGMENT_LIBRARY_PATH) $(HELPEX) -p $(PRJNAME) -r $(PRJ) -i @$(mktmp $(uniq $(foreach,i,$? $(!eq,$(i:f),$(i:f:s/.xhp//) $(i:f) $(XHPFILES))))) -x $(XHPDEST) -y $(SHELL_PACKAGE) -l all -lf $(aux_alllangiso:t",") -m $(LOCALIZESDF) && $(TOUCH) $@
+	@$(foreach,xhpfile,$(XHPFILES) cp $(SRC_ROOT)/$(PRJNAME)/source/$(SHELL_PACKAGE)/$(xhpfile) $(subst,$(PRJ),$(SRC_ROOT)/$(PRJNAME) $(XHPDEST))/en-US/$(SHELL_PACKAGE)/$(xhpfile) && ) \
+	$(foreach,lang,$(subst,en-US, $(aux_alllangiso)) \
+		$(AUGMENT_LIBRARY_PATH) $(HELPEX) -mi $(mktmp $(foreach,xhpfile,$(XHPFILES) $(SRC_ROOT)/$(PRJNAME)/source/$(SHELL_PACKAGE)/$(xhpfile))) -o $(subst,$(PRJ),$(SRC_ROOT)/$(PRJNAME) $(XHPDEST))/$(lang)/$(SHELL_PACKAGE) -m $(mktmp $(SRC_ROOT)/translations/source/$(lang)/$(PRJNAME)/source/$(SHELL_PACKAGE).po) -l $(lang) && )\
+	$(TOUCH) $@
 .ELSE			# "$(WITH_LANG)"!=""
     @echo Copying help files...
     $(COMMAND_ECHO)cp $(uniq $(foreach,i,$? $(!eq,$(i:f),$(i:f:s/.xhp//) $(i:f) $(XHPFILES)))) $(XHPDEST)$/en-US$/$(SHELL_PACKAGE) && $(TOUCH) $@
commit fedd4a578e8e22f8a40990a3272056f5b7572110
Author: Andras Timar <atimar at suse.com>
Date:   Sun Nov 18 18:32:47 2012 +0100

    fix makefile
    
    Change-Id: I148f01cb77548b600a799f5eda5970ab236d9663

diff --git a/librelogo/Extension_librelogo.mk b/librelogo/Extension_librelogo.mk
index 1c80e9d..8f525c3 100644
--- a/librelogo/Extension_librelogo.mk
+++ b/librelogo/Extension_librelogo.mk
@@ -41,6 +41,6 @@ $(eval $(call gb_Extension_localize_properties,librelogo,pythonpath/LibreLogo_en
 
 $(eval $(call gb_Extension_add_helpfile,librelogo,$(SRCDIR)/librelogo/source/help/en-US,org.openoffice.comp.pyuno.LibreLogo/LibreLogo.xhp,LibreLogo.xhp))
 
-$(eval $(call gb_Extension_add_helptreefile,librelogo,$(SRCDIR)/librelogo/source/help/en-US,/help.tree,/help.tree,org.openoffice.comp.pyuno.LibreLogo))
+$(eval $(call gb_Extension_add_helptreefile,librelogo,$(SRCDIR)/librelogo/source/help/en-US,help.tree,help.tree,org.openoffice.comp.pyuno.LibreLogo))
 
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
commit c48c4ace3630451c771afa20080f9bfb7ba05c03
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 14:42:04 2012 +0100

    Correct skipping source file line of msgctxt
    
    Change-Id: I7aed7a75c6e9b36efca9837c0137075065bcd1e6

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index df9efe3..648634c 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -252,10 +252,12 @@ void GenPoEntry::readFromFile(std::ifstream& rIFStream)
             m_sMsgStr = lcl_GenNormString(sLine.copy(7));
             pLastMsg = &m_sMsgStr;
         }
-        else if (sLine.startsWith("\"") && pLastMsg &&
-           (pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\"") )
+        else if (sLine.startsWith("\"") && pLastMsg)
         {
-            *pLastMsg += lcl_GenNormString(sLine);
+            if (pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\\n\"")
+            {
+                *pLastMsg += lcl_GenNormString(sLine);
+            }
         }
         else
             break;
commit d15706ec0ac0e1eaec1b95fe0271d17393915e32
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 14:39:17 2012 +0100

    Revert "Write source file into po entries' msgctxt"
    
    This reverts commit b0f07bbbc4f179d442ff96471669f02e82686657.

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index ce71207..df9efe3 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -255,10 +255,7 @@ void GenPoEntry::readFromFile(std::ifstream& rIFStream)
         else if (sLine.startsWith("\"") && pLastMsg &&
            (pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\"") )
         {
-            if ( pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\\n\"" )
-            {
-                *pLastMsg += lcl_GenNormString(sLine);
-            }
+            *pLastMsg += lcl_GenNormString(sLine);
         }
         else
             break;
commit ce48aa1488652ba8b24ada4d62b75aacf3ef6717
Author: Zolnai Tamás <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 14:38:47 2012 +0100

    Revert "Correct skiping source file line of  msgctxt"
    
    This reverts commit 7f81bbb1c7f090d9e962e5c2cb7b694298bfe1c8.

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index e59db11..ce71207 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -252,7 +252,8 @@ void GenPoEntry::readFromFile(std::ifstream& rIFStream)
             m_sMsgStr = lcl_GenNormString(sLine.copy(7));
             pLastMsg = &m_sMsgStr;
         }
-        else if (sLine.startsWith("\"") && pLastMsg)
+        else if (sLine.startsWith("\"") && pLastMsg &&
+           (pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\"") )
         {
             if ( pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\\n\"" )
             {
commit 7f81bbb1c7f090d9e962e5c2cb7b694298bfe1c8
Author: Ztamas <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 12:07:58 2012 +0100

    Correct skiping source file line of  msgctxt
    
    Change-Id: I64635dd7a6352300ed5fb6949a1b78c2a070c660

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index ce71207..e59db11 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -252,8 +252,7 @@ void GenPoEntry::readFromFile(std::ifstream& rIFStream)
             m_sMsgStr = lcl_GenNormString(sLine.copy(7));
             pLastMsg = &m_sMsgStr;
         }
-        else if (sLine.startsWith("\"") && pLastMsg &&
-           (pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\"") )
+        else if (sLine.startsWith("\"") && pLastMsg)
         {
             if ( pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\\n\"" )
             {
commit b0f07bbbc4f179d442ff96471669f02e82686657
Author: Ztamas <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 12:07:58 2012 +0100

    Write source file into po entries' msgctxt
    
    So (msgctxt, msgid) pair is unique in one po file
    
    Change-Id: I64635dd7a6352300ed5fb6949a1b78c2a070c660

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index df9efe3..ce71207 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -255,7 +255,10 @@ void GenPoEntry::readFromFile(std::ifstream& rIFStream)
         else if (sLine.startsWith("\"") && pLastMsg &&
            (pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\"") )
         {
-            *pLastMsg += lcl_GenNormString(sLine);
+            if ( pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\\n\"" )
+            {
+                *pLastMsg += lcl_GenNormString(sLine);
+            }
         }
         else
             break;
commit 124dc60e5519ee4d1c2454050b6f54a7b020905d
Author: Andras Timar <atimar at suse.com>
Date:   Sun Nov 18 13:04:33 2012 +0100

    Revert "put filename into msgctxt, because po entries must be unique"
    
    This reverts commit 889574a50c8f5bdffed9f3eb70426cedae0a589c.

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index 2ccaed6..df9efe3 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -452,8 +452,7 @@ PoEntry::PoEntry(const OString& rSDFLine, const TYPE eType)
         copy(vParts[SOURCEFILE].lastIndexOf("\\")+1));
 
     OString sMsgCtxt =
-        vParts[SOURCEFILE].copy(vParts[SOURCEFILE].lastIndexOf("\\")+1) +
-        "\n" + vParts[GROUPID] + "\n" +
+        vParts[GROUPID] + "\n" +
         (vParts[LOCALID].isEmpty() ? "" : vParts[LOCALID] + "\n") +
         vParts[RESOURCETYPE];
     switch(eType){
@@ -528,7 +527,7 @@ OString PoEntry::getSourceFile() const
 OString PoEntry::getGroupId() const
 {
     assert( m_bIsInitialized );
-    return m_pGenPo->getMsgCtxt().getToken(1,'\n');
+    return m_pGenPo->getMsgCtxt().getToken(0,'\n');
 }
 
 //Get localid
@@ -539,7 +538,7 @@ OString PoEntry::getLocalId() const
     if (sMsgCtxt.indexOf('\n')==sMsgCtxt.lastIndexOf('\n'))
         return OString();
     else
-        return sMsgCtxt.getToken(2,'\n');
+        return sMsgCtxt.getToken(1,'\n');
 }
 
 //Get the type of component from which entry is extracted
@@ -548,9 +547,9 @@ OString PoEntry::getResourceType() const
     assert( m_bIsInitialized );
     const OString sMsgCtxt = m_pGenPo->getMsgCtxt();
     if (sMsgCtxt.indexOf('\n')==sMsgCtxt.lastIndexOf('\n'))
-        return sMsgCtxt.getToken(2,'\n').getToken(0,'.');
+        return sMsgCtxt.getToken(1,'\n').getToken(0,'.');
     else
-        return sMsgCtxt.getToken(3,'\n').getToken(0,'.');
+        return sMsgCtxt.getToken(2,'\n').getToken(0,'.');
 }
 
 //Get the type of entry
commit 889574a50c8f5bdffed9f3eb70426cedae0a589c
Author: Andras Timar <atimar at suse.com>
Date:   Sun Nov 18 12:47:54 2012 +0100

    put filename into msgctxt, because po entries must be unique
    
    Change-Id: I700b668863c2b20cdf60fa672a994b8ae4dc613a

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index df9efe3..2ccaed6 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -452,7 +452,8 @@ PoEntry::PoEntry(const OString& rSDFLine, const TYPE eType)
         copy(vParts[SOURCEFILE].lastIndexOf("\\")+1));
 
     OString sMsgCtxt =
-        vParts[GROUPID] + "\n" +
+        vParts[SOURCEFILE].copy(vParts[SOURCEFILE].lastIndexOf("\\")+1) +
+        "\n" + vParts[GROUPID] + "\n" +
         (vParts[LOCALID].isEmpty() ? "" : vParts[LOCALID] + "\n") +
         vParts[RESOURCETYPE];
     switch(eType){
@@ -527,7 +528,7 @@ OString PoEntry::getSourceFile() const
 OString PoEntry::getGroupId() const
 {
     assert( m_bIsInitialized );
-    return m_pGenPo->getMsgCtxt().getToken(0,'\n');
+    return m_pGenPo->getMsgCtxt().getToken(1,'\n');
 }
 
 //Get localid
@@ -538,7 +539,7 @@ OString PoEntry::getLocalId() const
     if (sMsgCtxt.indexOf('\n')==sMsgCtxt.lastIndexOf('\n'))
         return OString();
     else
-        return sMsgCtxt.getToken(1,'\n');
+        return sMsgCtxt.getToken(2,'\n');
 }
 
 //Get the type of component from which entry is extracted
@@ -547,9 +548,9 @@ OString PoEntry::getResourceType() const
     assert( m_bIsInitialized );
     const OString sMsgCtxt = m_pGenPo->getMsgCtxt();
     if (sMsgCtxt.indexOf('\n')==sMsgCtxt.lastIndexOf('\n'))
-        return sMsgCtxt.getToken(1,'\n').getToken(0,'.');
-    else
         return sMsgCtxt.getToken(2,'\n').getToken(0,'.');
+    else
+        return sMsgCtxt.getToken(3,'\n').getToken(0,'.');
 }
 
 //Get the type of entry
commit 302a099e5264742204b625f1cce949892d8a84f9
Author: Ztamas <zolnaitamas2000g at gmail.com>
Date:   Sun Nov 18 12:07:58 2012 +0100

    Write source file into po entries' msgctxt
    
    So (msgctxt, msgid) pair is unique in one po file
    
    Change-Id: I64635dd7a6352300ed5fb6949a1b78c2a070c660

diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index 18c0ef1..df9efe3 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -198,7 +198,8 @@ void GenPoEntry::writeToFile(std::ofstream& rOFStream) const
         rOFStream << "#, fuzzy" << std::endl;
     if ( !m_sMsgCtxt.isEmpty() )
         rOFStream << "msgctxt "
-                  << lcl_GenMsgString(m_sMsgCtxt).getStr() << std::endl;
+                  << lcl_GenMsgString(m_sReference+"\n"+m_sMsgCtxt).getStr()
+                  << std::endl;
     rOFStream << "msgid "
               << lcl_GenMsgString(m_sMsgId).getStr() << std::endl;
     rOFStream << "msgstr "
@@ -251,7 +252,8 @@ void GenPoEntry::readFromFile(std::ifstream& rIFStream)
             m_sMsgStr = lcl_GenNormString(sLine.copy(7));
             pLastMsg = &m_sMsgStr;
         }
-        else if (sLine.startsWith("\"") && pLastMsg)
+        else if (sLine.startsWith("\"") && pLastMsg &&
+           (pLastMsg != &m_sMsgCtxt || sLine != "\"" + m_sReference + "\"") )
         {
             *pLastMsg += lcl_GenNormString(sLine);
         }
commit fea5e609ba800118cdb5d84c8bd78d00e86e003e
Author: Zolnai Tamás <zolnaitamas2000 at gamil.com>
Date:   Fri Nov 16 16:33:19 2012 +0100

    Last changes in renewpo for migration
    
    Order PoEntries by their locations in original po files
    by adding serialnumber in po2lo and work up them in this order
    in renewpo. So the order will be the same in new po files.
    
    Change-Id: Idb0547a2e1262008b374fe450ec3e01af0cff839

diff --git a/l10ntools/scripts/po2lo b/l10ntools/scripts/po2lo
index 5796991..6303c63 100755
--- a/l10ntools/scripts/po2lo
+++ b/l10ntools/scripts/po2lo
@@ -41,7 +41,7 @@ class Entry:
     """Represents a single line in an SDF file."""
 
     def __init__(self, items):
-        self.has_translation = None;
+        self.has_po = None
         self.items = items # list of 15 fields
         path = self.items[1].split('\\')
         self.po = "%s/%s/%s.po" % (options.input.replace('\\', '/'), self.items[0], "/".join(path[:-1]))
@@ -67,15 +67,17 @@ class Entry:
 
         self.items[9] = options.language
         self.items[2] = ""
-        self.has_translation = False
+        self.has_po = False
         for idx, key in self.keys:
             try:
-                if translations.data[(self.po, key)][1]:
+                self.items[8] = str(translations.snumber[(self.po, key)])
+                self.has_po = True
+                (text, fuzzy) = translations.data[(self.po, key)]
+                if fuzzy:
                     self.items[2] += "1"
                 else:
                     self.items[2] += "0"
-                self.items[idx] = translations.data[(self.po, key)][0]
-                self.has_translation = True
+                self.items[idx] = text
 
                 self.items[14] = "2002-02-02 02:02:02"
             except KeyError:
@@ -103,9 +105,10 @@ class Template:
 
         sock = xopen(options.output, "w", encoding='utf-8')
         for line in self.lines:
-            sock.write("\t".join(line.items))
+            temp = "\t".join(line.items)
             line.translate(translations)
-            if line.has_translation:
+            if line.has_po:
+                sock.write(temp)
                 sock.write("\t".join(line.items)+"\r\n")
         sock.close()
 
@@ -114,6 +117,8 @@ class Translations:
 
     def __init__(self):
         self.data = {}
+        self.snumber = {}
+        counter = 0
         for root, dirs, files in os.walk(options.input):
             for file in files:
                 path = "%s/%s" % (root, file)
@@ -125,16 +130,17 @@ class Translations:
                 for line in sock:
                     if line.startswith("#: "):
                         key = line.strip()[3:]
+                        fuzzy = False
                     elif line.startswith("#, fuzzy"):
                         fuzzy = True
+                    elif line.startswith("msgid "):
+                        counter = counter + 1
+                        self.setserialnumber(path, key, counter)
                     elif line.startswith("msgstr "):
                         trans = line.strip()[8:-1]
                         if len(trans):
                             self.setdata(path, key, trans, fuzzy)
-                            if fuzzy:
-                                fuzzy = False
-                            else:
-                                multiline = False
+                            multiline = False
                         else:
                             buf = []
                             buf.append(trans)
@@ -143,8 +149,6 @@ class Translations:
                         buf.append(line.strip()[1:-1])
                     elif multiline and not len(line.strip()) and len("".join(buf)):
                         self.setdata(path, key, "".join(buf),fuzzy)
-                        if fuzzy:
-                            fuzzy = False
                         buf = []
                         multiline = False
                 if multiline and len("".join(buf)):
@@ -162,6 +166,9 @@ class Translations:
                 s = s.replace('\\\\', '\\')
             self.data[(path.replace('\\', '/'), key)] = ( s , fuzzy )
 
+    def setserialnumber(self, path, key, number):
+        self.snumber[(path.replace('\\', '/'), key)] = ( number )
+
     def escape_help_text(self, text):
         """Escapes the help text as it would be in an SDF file."""
 
diff --git a/l10ntools/source/renewpo.cxx b/l10ntools/source/renewpo.cxx
index 32d19d5..a9f3321 100644
--- a/l10ntools/source/renewpo.cxx
+++ b/l10ntools/source/renewpo.cxx
@@ -12,6 +12,7 @@
 #include <dirent.h>
 #include <string>
 #include <vector>
+#include <map>
 
 #include <osl/file.hxx>
 #include <rtl/string.hxx>
@@ -20,18 +21,18 @@
 
 using namespace std;
 
-//Check wheather the two entry are the same but in different languages
-bool IsSameEntry(const OString& rFirstEntry,const OString& rSecEntry)
+bool isInSameFile( const OString& rFirstLine, const OString& rSecondLine)
 {
-    for(int i = PoEntry::PROJECT; i<=PoEntry::LOCALID;++i)
-    {
-        if ( rFirstEntry.getToken(i,'\t') != rSecEntry.getToken(i,'\t') &&
-             i != PoEntry::DUMMY)
-            return false;
-    }
-    return true;
+    const OString rFirstSource =
+        rFirstLine.getToken(PoEntry::SOURCEFILE,'\t');
+    const OString rSecondSource =
+        rSecondLine.getToken(PoEntry::SOURCEFILE,'\t');
+    return
+        rFirstSource.copy(0,rFirstSource.lastIndexOf("\\")) ==
+        rSecondSource.copy(0,rSecondSource.lastIndexOf("\\"));
 }
 
+
 //Get path of po file
 OString GetPath(const OString& rPath, const OString& rLine)
 {
@@ -57,8 +58,9 @@ OString DelLocalId(const OString& rLine)
 }
 
 //Renew po files of the actual language
-void HandleLanguage(struct dirent* pLangEntry, const OString& rPath,
-                    const OString& rpo2loPath, const OString& rSDFPath)
+void HandleLanguage(struct dirent* pLangEntry, const OString& rOldPath,
+    const OString& rNewPath, const OString& rpo2loPath,
+    const OString& rSDFPath)
 {
     const OString LangEntryName = pLangEntry->d_name;
 
@@ -83,35 +85,69 @@ void HandleLanguage(struct dirent* pLangEntry, const OString& rPath,
     const OString SDFFileName =
         OUStringToOString(aTempPath, RTL_TEXTENCODING_UTF8);
     system( (rpo2loPath +
-            " -i " + rPath + "/" + LangEntryName +
+            " -i " + rOldPath + "/" + LangEntryName +
             " -o " + SDFFileName +
             " -l " + LangEntryName +
             " -t " + rSDFPath).getStr());
     cout << "Language sdf is ready!" << endl;
 
-    PoOfstream aNewPo;
+    //Store info for po entries
     ifstream aSDFInput(SDFFileName.getStr());
+    map<sal_Int32,pair<OString,OString> > aPoInfos;
     string s;
     getline(aSDFInput,s);
-    OString sLine = OString(s.data(),s.length());
     while(!aSDFInput.eof())
     {
-        OString sActUnTrans = sLine;
-        const OString sPath = rPath + "/"+ LangEntryName;
-        const OString sActSourcePath = GetPath(sPath,sActUnTrans);
+        //Get strings belong to one po entry and store
+        const OString sActUnTrans = OString(s.data(),s.length());
+        if( sActUnTrans.getToken(PoEntry::LANGUAGEID,'\t')=="ast" ) throw;
+        getline(aSDFInput,s);
+        const OString sActTrans = OString(s.data(),s.length());
+
+        if(!(aPoInfos.insert( pair<sal_Int32,pair<OString,OString> >(
+            sActTrans.getToken(PoEntry::WIDTH,'\t').toInt32(),
+            pair<OString,OString>(sActUnTrans,sActTrans))).second))
+        {
+            cerr << "Error: faild to insert into map!" << '\n';
+            throw;
+        }
+        getline(aSDFInput,s);
+    }
+
+    //Close and remove sdf file
+    aSDFInput.close();
+    if (osl::File::remove(aTempUrl) != osl::FileBase::E_None)
+    {
+        cerr << "Warning: failure removing temporary " << aTempUrl << '\n';
+    }
+
+    //Construct and write out po entries
+    PoOfstream aNewPo;
+    for( map<sal_Int32,pair<OString,OString> >::iterator
+        pActInfo=aPoInfos.begin(); pActInfo!=aPoInfos.end(); ++pActInfo )
+    {
         //Make new po file and add header
-        if (!aNewPo.isOpen())
+        if ( pActInfo==aPoInfos.begin() ||
+            !isInSameFile(((--pActInfo)++)->second.first,pActInfo->second.first) )
         {
-            const OString sNewPoFileName = sActSourcePath + ".po_tmp";
+            if( pActInfo!=aPoInfos.begin() )
+                aNewPo.close();
+
+            const OString sNewPoFileName =
+                GetPath(rNewPath + "/" +LangEntryName,pActInfo->second.first) +
+                ".po";
+            system(("mkdir -p " + sNewPoFileName.copy(0,sNewPoFileName.lastIndexOf("/"))).getStr());
             aNewPo.open(sNewPoFileName);
             if (!aNewPo.isOpen())
             {
                 cerr
-                    << "Cannot open temp file for new po: "
+                    << "Cannot open new po file: "
                     << sNewPoFileName.getStr() << endl;
                 return;
             }
-            const OString sOldPoFileName = sActSourcePath + ".po";
+            const OString sOldPoFileName =
+                GetPath(rOldPath + "/" +LangEntryName,pActInfo->second.first) +
+                ".po";
             ifstream aOldPo(sOldPoFileName.getStr());
             if (!aOldPo.is_open())
             {
@@ -124,19 +160,7 @@ void HandleLanguage(struct dirent* pLangEntry, const OString& rPath,
             aOldPo.close();
         }
 
-        //Set PoEntry and write out
-        getline(aSDFInput,s);
-        OString sActTrans;
-        if (!aSDFInput.eof() &&
-            IsSameEntry(sActUnTrans,sLine = OString(s.data(),s.length())))
-        {
-            sActTrans = sLine;
-            getline(aSDFInput,s);
-        }
-        else
-        {
-            sActTrans ="";
-        }
+        //Write out po entries
         const PoEntry::TYPE vInitializer[] =
             { PoEntry::TTEXT, PoEntry::TQUICKHELPTEXT, PoEntry::TTITLE };
         const vector<PoEntry::TYPE> vTypes( vInitializer,
@@ -144,28 +168,28 @@ void HandleLanguage(struct dirent* pLangEntry, const OString& rPath,
         unsigned short nDummyBit = 0;
         for( unsigned short nIndex=0; nIndex<vTypes.size(); ++nIndex )
         {
-            if (!sActUnTrans.getToken(vTypes[nIndex],'\t').isEmpty())
+            if (!pActInfo->second.first.getToken(vTypes[nIndex],'\t').isEmpty())
             {
                 /**Because of xrmex there are duplicated id's,
-                   only use this if xrmex have already fixed*/
+                only use this if xrmex have already fixed*/
                 const OString sSource =
-                    sActUnTrans.getToken(PoEntry::SOURCEFILE,'\t');
+                    pActInfo->second.first.getToken(PoEntry::SOURCEFILE,'\t');
                 const OString sEnding =
                     sSource.copy(sSource.getLength()-4, 4);
-                if (sActUnTrans.getToken(PoEntry::GROUPID,'\t')==
-                    sActUnTrans.getToken(PoEntry::LOCALID,'\t') &&
+                if (pActInfo->second.first.getToken(PoEntry::GROUPID,'\t')==
+                    pActInfo->second.first.getToken(PoEntry::LOCALID,'\t') &&
                     ( sEnding == ".xrm" || sEnding == ".xml" ))
                 {
-                    sActUnTrans = DelLocalId(sActUnTrans);
+                    pActInfo->second.first = DelLocalId(pActInfo->second.first);
                 }
                 try
                 {
-                    PoEntry aPE(sActUnTrans, vTypes[nIndex]);
+                    PoEntry aPE(pActInfo->second.first, vTypes[nIndex]);
                     const OString sActStr =
-                        sActTrans.getToken(vTypes[nIndex],'\t');
+                        pActInfo->second.second.getToken(vTypes[nIndex],'\t');
                     aPE.setMsgStr(sActStr);
                     aPE.setFuzzy( sActStr.isEmpty() ? false :
-                        static_cast<bool>(sActTrans.getToken(PoEntry::DUMMY,'\t').
+                        static_cast<bool>(pActInfo->second.second.getToken(PoEntry::DUMMY,'\t').
                             copy(nDummyBit++,1).toBoolean()));
                     aNewPo.writeEntry(aPE);
                 }
@@ -173,28 +197,13 @@ void HandleLanguage(struct dirent* pLangEntry, const OString& rPath,
                 {
                     cerr
                         << "Invalid sdf line "
-                        << sActUnTrans.replaceAll("\t","\\t").getStr() << '\n';
+                        << pActInfo->second.first.replaceAll("\t","\\t").getStr() << '\n';
                 }
             }
         }
-        //Check wheather next entry is in the same po file
-        OString sNextSourcePath = aSDFInput.eof() ? "" :
-            GetPath(sPath,sLine = OString(s.data(),s.length()));
-        if (sNextSourcePath!=sActSourcePath)
-        {
-            aNewPo.close();
-            system(("rm " + sActSourcePath +".po").getStr());
-            system(("mv "+ sActSourcePath +".po_tmp " +
-                    sActSourcePath +".po").getStr());
-        }
-    }
-
-    //Close and remove sdf file
-    aSDFInput.close();
-    if (osl::File::remove(aTempUrl) != osl::FileBase::E_None)
-    {
-        cerr << "Warning: failure removing temporary " << aTempUrl << '\n';
     }
+    aNewPo.close();
+    aPoInfos.clear();
 }
 
 
@@ -203,10 +212,7 @@ int main(int argc, char* argv[])
     //Usage
     if (argc < 4)
     {
-        cout << "Use: renewpot translationsdir po2lo en-US.sdf" << endl;
-        cout << "translationsdir: this directory contains the po" << endl;
-        cout << "files of all languages. Every language has a" << endl;
-        cout << "directory named with language id." << endl;
+        cout << "Use: renewpot oldpots newpots po2lo en-US.sdf" << endl;
         return 1;
     }
 
@@ -216,7 +222,8 @@ int main(int argc, char* argv[])
     {
         if ( OString(pActEntry->d_name).indexOf('.')==-1 )
             HandleLanguage(pActEntry,OString(argv[1]),
-                           OString(argv[2]),OString(argv[3]));
+                           OString(argv[2]),OString(argv[3]),
+                           OString(argv[4]));
     }
     closedir(pTranslations);
 }
commit f6147cbe1c6097314a91299cb8a352bb40eeb4d6
Author: Zolnai Tamás <zolnaitamas2000 at gamil.com>
Date:   Fri Nov 16 18:19:13 2012 +0100

    Handle dictionaries in the same way in localize
    
    By now, not needed to handle dictionaries
    in other way, because its root moves up directly
    to core.
    
    Change-Id: I90d6a67c90b00eea290f17e277fb13c0a6b0b5cd

diff --git a/l10ntools/source/localize.cxx b/l10ntools/source/localize.cxx
index 107d516..8b3e94f 100644
--- a/l10ntools/source/localize.cxx
+++ b/l10ntools/source/localize.cxx
@@ -267,15 +267,10 @@ void handleCommand(
             {
                 const sal_Int32 nProjectInd = inPath.indexOf(project);

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list