summaryrefslogtreecommitdiff
path: root/l10ntools
diff options
context:
space:
mode:
authorXiaofei Zhang <Zhangxiaofei@openoffice.org>2010-11-10 13:50:33 +0800
committerXiaofei Zhang <Zhangxiaofei@openoffice.org>2010-11-10 13:50:33 +0800
commit3491b4ac4fe34cacea5f4d0a4594d4a88cbbe7b2 (patch)
tree8dc60b794b88dd87c965d149c93fa3ac81e3096c /l10ntools
parent66e7dc1197e76e686ba731382d032a9a72849959 (diff)
parent95f71183414a50d12cd4bbacf47d711672e63268 (diff)
removetooltypes01: #i112600# resync to DEV300_m92; remove tooltypes from xmloff, linguistic, vcl, svtools, accessibility, fpicker, uui and framework
Diffstat (limited to 'l10ntools')
-rw-r--r--l10ntools/inc/lngmerge.hxx2
-rw-r--r--l10ntools/java/jpropex/java/JPropEx.java132
-rw-r--r--l10ntools/java/jpropex/java/NoLocalizeFilter.java2
-rw-r--r--l10ntools/java/jpropex/java/SdfData.java5
-rw-r--r--l10ntools/java/jpropex/java/SdfEntity.java37
-rwxr-xr-xl10ntools/java/jpropex/jpropex4
-rw-r--r--l10ntools/prj/build.lst3
-rw-r--r--l10ntools/prj/d.lst15
-rw-r--r--l10ntools/scripts/keyidGen.pl2
-rwxr-xr-x[-rw-r--r--]l10ntools/scripts/localize.pl129
-rw-r--r--l10ntools/scripts/makefile.mk59
-rw-r--r--l10ntools/scripts/tool/const.py39
-rw-r--r--l10ntools/scripts/tool/l10ntool.py210
-rw-r--r--l10ntools/scripts/tool/pseudo.py184
-rw-r--r--l10ntools/scripts/tool/sdf.py170
-rw-r--r--l10ntools/scripts/tool/xhtex.py136
-rw-r--r--l10ntools/scripts/tool/xtxex.py94
-rwxr-xr-xl10ntools/scripts/xhtex46
-rwxr-xr-xl10ntools/scripts/xtxex47
-rw-r--r--l10ntools/source/cfglex.l17
-rw-r--r--l10ntools/source/cfgmerge.cxx17
-rw-r--r--l10ntools/source/export.cxx12
-rw-r--r--l10ntools/source/export2.cxx5
-rw-r--r--l10ntools/source/help/HelpIndexerTool.java24
-rw-r--r--l10ntools/source/help/HelpLinker.cxx181
-rw-r--r--l10ntools/source/help/compilehelp.hxx1
-rw-r--r--l10ntools/source/helpex.cxx8
-rw-r--r--l10ntools/source/helpmerge.cxx11
-rw-r--r--l10ntools/source/lngex.cxx20
-rw-r--r--l10ntools/source/lngmerge.cxx5
-rw-r--r--l10ntools/source/localize.cxx46
-rw-r--r--l10ntools/source/merge.cxx3
-rw-r--r--l10ntools/source/srclex.l6
-rw-r--r--l10ntools/source/xrmlex.l60
-rw-r--r--l10ntools/source/xrmmerge.cxx88
35 files changed, 1361 insertions, 459 deletions
diff --git a/l10ntools/inc/lngmerge.hxx b/l10ntools/inc/lngmerge.hxx
index ba8577c0fc04..dce939386539 100644
--- a/l10ntools/inc/lngmerge.hxx
+++ b/l10ntools/inc/lngmerge.hxx
@@ -58,7 +58,7 @@ private:
const ByteString &rPrj ,
const ByteString &rRoot , const ByteString &sActFileName , const ByteString &sID );
public:
- LngParser( const ByteString &rLngFile, sal_Bool bUTF8, sal_Bool bULFFormat, bool bQuiet_in );
+ LngParser( const ByteString &rLngFile, sal_Bool bUTF8, sal_Bool bULFFormat );
~LngParser();
sal_Bool CreateSDF( const ByteString &rSDFFile, const ByteString &rPrj, const ByteString &rRoot );
diff --git a/l10ntools/java/jpropex/java/JPropEx.java b/l10ntools/java/jpropex/java/JPropEx.java
index d0f72d627aaf..9ff8bf96fe44 100644
--- a/l10ntools/java/jpropex/java/JPropEx.java
+++ b/l10ntools/java/jpropex/java/JPropEx.java
@@ -43,7 +43,10 @@ public class JPropEx
private boolean isQuiet = false;
private final String resourceType = "javaproperties";
private final String sourceLanguage = "en-US";
- //private SdfData data;
+
+ static final int JAVA_TYPE = 0;
+ static final int JAVA_ENUS_TYPE = 1;
+ static final int EXTENSION_TYPE = 2;
public JPropEx()
{
@@ -118,28 +121,38 @@ public class JPropEx
String key;
SdfEntity currentStr;
String value;
+ String str;
for( Enumeration e = prop.propertyNames() ; e.hasMoreElements() ; )
{
key = (String) e.nextElement();
currentStr = (SdfEntity) dolly.clone();
- // Set the new LID and the string text
- currentStr.setLid( key );
+ // Set the new GID and the string text
+ currentStr.setGid( key );
value = prop.getProperty( key , "" );
//if( value.equals("") ) System.err.println("Warning: in file "+inputFileArg+" the string with the key "+key+" has a empty string!");
- currentStr.setText( (prop.getProperty( key )).replaceAll("\t" , " " ) ); // TODO: Quoting!!!!
- data.add( currentStr );
+ str = (prop.getProperty( key )).replaceAll("\t" , " " ); // remove tab
+ str = str.replaceAll("\n"," "); // remove return
+ currentStr.setText( str );
+ if( str.length() > 0 )
+ data.add( currentStr );
}
data.write( outputFileArg );
}
private SdfEntity prepareSdfObj( String filename )
{
- String path = makeAbs( filename );
- //String path = makeAbs( inputFileArg );
- path = path.replace( rootArg + "/" , "" );
+ String path = makeAbs( filename ).trim();
+ String myRootArg = makeAbs( rootArg ).trim();
+ myRootArg = myRootArg.replace( "\\","/");
+ myRootArg += "/";
+ path = path.replace("\\","/");
+ path = path.replace( myRootArg, "" );
path = path.replace("/","\\");
- return new SdfEntity( projectArg , path , "" /* dummy1 */ , resourceType , "", "" , "" , "" , "" /* dummy2 */ ,
- sourceLanguage , "", "" , "" , "" , "2002-02-02 02:02:02" );
+ // TODO: Make this static
+ java.text.SimpleDateFormat dateformat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String date = dateformat.format( new Date() );
+ return new SdfEntity( projectArg , path , "0" /* dummy1 */ , resourceType , "", "" , "" , "" , "0" /* dummy2 */ ,
+ sourceLanguage , "", "" , "" , "" , date );
}
private void merge()
@@ -166,7 +179,7 @@ public class JPropEx
{
BufferedReader in = new BufferedReader( new FileReader( filename.substring( 1 ) ) );
while( in.ready() )
- lines.add( in.readLine() );
+ lines.add( in.readLine().trim() );
}
catch( IOException e )
{
@@ -178,6 +191,7 @@ public class JPropEx
private void mergeFile( String filename , SdfData data , boolean isSingleFile )
{
+ int type = detectFormat( filename );
java.util.Properties sourceProp = loadProp( filename );
Vector langs = getLanguages( data );
HashMap props = new HashMap();
@@ -200,7 +214,7 @@ public class JPropEx
key = (String) e.nextElement();
sourceString = sourceProp.getProperty( key );
curStr = (SdfEntity) dolly.clone();
- curStr.setLid( key );
+ curStr.setGid( key );
for( Enumeration lang = langs.elements(); lang.hasMoreElements(); ) // merge in every language
{
curEntity = (SdfEntity) curStr.clone();
@@ -209,13 +223,13 @@ public class JPropEx
mergedEntity = data.get( curEntity );
if( mergedEntity == null )
{
- // if case there is not translation the fallback to the en-US source string
- ( (java.util.Properties) props.get( curLang )).setProperty( curEntity.getLid() , sourceString );
+ // in case there is no translation then fallback to the en-US source string
+ ( (java.util.Properties) props.get( curLang )).setProperty( curEntity.getGid() , sourceString );
}
else
{
// Set the merged text from the sdf file
- ( (java.util.Properties) props.get( curLang )).setProperty( mergedEntity.getLid() , mergedEntity.getText() ); // TODO: Quoting ???
+ ( (java.util.Properties) props.get( curLang )).setProperty( mergedEntity.getGid() , mergedEntity.getText() ); // TODO: Quoting ???
}
}
@@ -225,10 +239,10 @@ public class JPropEx
for( Iterator i = props.keySet().iterator() ; i.hasNext() ; )
{
lang = (String) i.next();
- writeSinglePropertiesFile( filename , (java.util.Properties) props.get( lang ) , lang , isSingleFile );
+ writeSinglePropertiesFile( filename , (java.util.Properties) props.get( lang ) , lang , isSingleFile , type );
}
}
- private void writeSinglePropertiesFile( String filename , java.util.Properties prop , String lang , boolean isSingleFile )
+ private void writeSinglePropertiesFile( String filename , java.util.Properties prop , String lang , boolean isSingleFile , int type )
{
// Prepare path to file
int filenameIdx = filename.lastIndexOf( "/" ) > 0 ? filename.lastIndexOf( "/" )+1 : 0 ;
@@ -240,24 +254,21 @@ public class JPropEx
if( pathPrefixArg != null && pathPrefixArg.length()>0 && pathPostfixArg != null && pathPostfixArg.length()>0 )
{
path = new StringBuffer().append( pathPrefixArg ).append( "/" ).append( lcLang ).append( "/" ).append( pathPostfixArg ).append( "/" ).toString();
- name = new StringBuffer().append( filename.substring( filenameIdx , filename.lastIndexOf( ".properties" ) ) )
- .append( "_" ).append( lcLang.replaceAll("-","_") ).append( ".properties" ).toString();
+ name += formatFilename( filename , filenameIdx , lang , type );
}
//use of -i <one_filename>
else if( !isSingleFile && outputFileArg != null && outputFileArg.length()>0 )
{
- name = outputFileArg;
- name += new StringBuffer().append( filename.substring( filenameIdx , filename.lastIndexOf( ".properties" ) ) )
- .append( "_" ).append( lcLang.replaceAll("-","_") ).append( ".properties" ).toString();
//name = outputFileArg;
+ path = outputFileArg;
+ name += formatFilename( filename , filenameIdx , lang , type );
}
//use of -i @<file_containing_many_filenames>
else if( isSingleFile && outputFileArg != null && outputFileArg.length()>0 )
{
- name = outputFileArg;
- name += new StringBuffer().append( inputFileArg.substring( filenameIdx , filename.lastIndexOf( ".properties" ) ) )
- .append( "_" ).append( lcLang.replaceAll("-","_") ).append( ".properties" ).toString();
//name = outputFileArg;
+ path = outputFileArg;
+ name += formatFilename( filename , filenameIdx , lang , type );
}
else
{
@@ -284,7 +295,7 @@ public class JPropEx
}
path += name;
// Write the properties file
- System.out.println("DBG: Writing to "+path);
+ //System.out.println("DBG: Writing to "+path);
try{
BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream( path ) );
if( prop == null )
@@ -298,6 +309,75 @@ public class JPropEx
}
}
+ // we have different types of properties in the source code
+ // each needs a different file nameing scheme
+ private int detectFormat( String filename )
+ {
+ if( filename.endsWith( "_en_US.properties" ) )
+ return EXTENSION_TYPE;
+ else if( filename.endsWith("_en_us.properties" ) )
+ return JAVA_ENUS_TYPE;
+ else if( filename.endsWith( ".properties" ) )
+ return JAVA_TYPE;
+
+ // Can not detect, exit
+ System.err.println("ERROR: Invalid file name. Only allowed (case sensitive!) *_en_US.properties , *_en_us.properties or *.properties\n");
+ System.exit(-1);
+ return JAVA_TYPE; // dummy
+ }
+
+ private String formatFilename( String filename , int filenameIdx , String lang , int type )
+ {
+
+ if( !lang.equals( "en-US" ) )
+ {
+ // Parse iso code
+ int pos = lang.indexOf("-");
+ String langpart1 = new String();
+ String langpart2 = new String();
+ if( pos == -1 )
+ {
+ langpart1 = lang;
+ }
+ else if( pos > 0 )
+ {
+ langpart1 = lang.substring( 0 , pos );
+ langpart2 = lang.substring( pos+1 , lang.length() );
+ }
+ // change filename according to the type
+ switch( type )
+ {
+ // -> de_DE
+ case EXTENSION_TYPE:
+ lang = langpart1.toLowerCase();
+ if( langpart2.length() > 0 ) // -> en_US
+ lang += "_" + langpart2.toUpperCase();
+ else // -> de_DE
+ lang += "_" + langpart1.toUpperCase();
+ return new StringBuffer().append( filename.substring( filenameIdx , filename.lastIndexOf( "_en_US.properties" ) ) )
+ .append( "_" ).append( lang.replaceAll("-","_") ).append( ".properties" ).toString();
+ // -> de
+ case JAVA_ENUS_TYPE:
+ lang = langpart1.toLowerCase();
+ if( langpart2.length() > 0 )
+ lang += "_" + langpart2.toLowerCase();
+ return new StringBuffer().append( filename.substring( filenameIdx , filename.lastIndexOf( "_en_us.properties" ) ) )
+ .append( "_" ).append( lang.replaceAll("-","_") ).append( ".properties" ).toString();
+ // -> de
+ case JAVA_TYPE:
+ lang = langpart1.toLowerCase();
+ if( langpart2.length() > 0 )
+ lang += "_" + langpart2.toLowerCase();
+ return new StringBuffer().append( filename.substring( filenameIdx , filename.lastIndexOf( ".properties" ) ) )
+ .append( "_" ).append( lang.replaceAll("-","_") ).append( ".properties" ).toString();
+ default:
+ System.err.println("ERROR: Something is really broken here, l10ntools/java/jprop/java/JPropEx.java :: formatFilename()");
+ System.exit( -1 );
+ break;
+ }
+ }
+ return filename; // don't change en-US source file name
+ }
private SdfData getSdfData()
{
SdfData data = new SdfData( inputSdfFileArg );
diff --git a/l10ntools/java/jpropex/java/NoLocalizeFilter.java b/l10ntools/java/jpropex/java/NoLocalizeFilter.java
index 3bfa53df2296..989ee64bfc86 100644
--- a/l10ntools/java/jpropex/java/NoLocalizeFilter.java
+++ b/l10ntools/java/jpropex/java/NoLocalizeFilter.java
@@ -44,9 +44,7 @@ public class NoLocalizeFilter extends FilterInputStream
String search = new String( b );
Matcher m = p.matcher( search );
if( m.find() )
- //if( search.contains("x-no-translate" ) ) // TODO: fixme!
{
- System.out.println("found x-no-translate");
in.close();
close();
System.exit( 0 );
diff --git a/l10ntools/java/jpropex/java/SdfData.java b/l10ntools/java/jpropex/java/SdfData.java
index 80b8ea890f26..98eddbeca20f 100644
--- a/l10ntools/java/jpropex/java/SdfData.java
+++ b/l10ntools/java/jpropex/java/SdfData.java
@@ -68,7 +68,7 @@ public class SdfData
BufferedReader in;
try
{
- in = new BufferedReader( new FileReader( filename ) );
+ in = new BufferedReader( new InputStreamReader( new FileInputStream( filename ), "UTF-8" ) );
SdfEntity entity;
while( in.ready() )
{
@@ -84,8 +84,7 @@ public class SdfData
}
catch( IOException e )
{
- System.out.println("Error: reading file " + filename);
- System.exit( -1 );
+ System.out.println("Warning: can not read file " + filename);
}
}
public void write( String filename )
diff --git a/l10ntools/java/jpropex/java/SdfEntity.java b/l10ntools/java/jpropex/java/SdfEntity.java
index 52dc61ca40ca..7723238815e7 100644
--- a/l10ntools/java/jpropex/java/SdfEntity.java
+++ b/l10ntools/java/jpropex/java/SdfEntity.java
@@ -97,24 +97,25 @@ public class SdfEntity implements Cloneable{
}
public void setProperties( String line ){
-
- String[] splitted = line.split("\t");
-
- setProject( splitted[ SdfEntity.PROJECT_POS ] );
- setSource_file( splitted[ SdfEntity.SOURCE_FILE_POS ] );
- setDummy1( splitted[ SdfEntity.DUMMY1_POS ] );
- setResource_type( splitted[ SdfEntity.RESOURCE_TYPE_POS ] );
- setGid( splitted[ SdfEntity.GID_POS ] );
- setLid( splitted[ SdfEntity.LID_POS ] );
- setHelpid( splitted[ SdfEntity.HELPID_POS ] );
- setPlatform( splitted[ SdfEntity.PLATFORM_POS ] );
- setDummy2( splitted[ SdfEntity.DUMMY2_POS ] );
- setLangid( splitted[ SdfEntity.LANGID_POS ] );
- setText( splitted[ SdfEntity.TEXT_POS ] );
- setHelptext( splitted[ SdfEntity.HELPTEXT_POS ] );
- setQuickhelptext( splitted[ SdfEntity.QUICKHELPTEXT_POS ] );
- setTitle( splitted[ SdfEntity.TITLE_POS ] );
- setDate( splitted[ SdfEntity.DATE_POS ] );
+ if( line != null )
+ {
+ String[] splitted = line.split("\t",15);
+ setProject( splitted[ SdfEntity.PROJECT_POS ] );
+ setSource_file( splitted[ SdfEntity.SOURCE_FILE_POS ] );
+ setDummy1( splitted[ SdfEntity.DUMMY1_POS ] );
+ setResource_type( splitted[ SdfEntity.RESOURCE_TYPE_POS ] );
+ setGid( splitted[ SdfEntity.GID_POS ] );
+ setLid( splitted[ SdfEntity.LID_POS ] );
+ setHelpid( splitted[ SdfEntity.HELPID_POS ] );
+ setPlatform( splitted[ SdfEntity.PLATFORM_POS ] );
+ setDummy2( splitted[ SdfEntity.DUMMY2_POS ] );
+ setLangid( splitted[ SdfEntity.LANGID_POS ] );
+ setText( splitted[ SdfEntity.TEXT_POS ] );
+ setHelptext( splitted[ SdfEntity.HELPTEXT_POS ] );
+ setQuickhelptext( splitted[ SdfEntity.QUICKHELPTEXT_POS ] );
+ setTitle( splitted[ SdfEntity.TITLE_POS ] );
+ setDate( splitted[ SdfEntity.DATE_POS ] );
+ }
}
public String getFileId(){
diff --git a/l10ntools/java/jpropex/jpropex b/l10ntools/java/jpropex/jpropex
index 2d62d13b093e..8c9982f2b1d3 100755
--- a/l10ntools/java/jpropex/jpropex
+++ b/l10ntools/java/jpropex/jpropex
@@ -3,8 +3,10 @@ if [ x${SOLARENV}x = xx ]; then
echo No environment found, please use 'configure' or 'setsolar'
exit 1
fi
+
if [ x${JAVA_HOME}x = xx ]; then
- echo No Java found!
+ echo ERROR: No java found
exit 1
fi
+
exec java -DSOLARSRC=${SOLARSRC} -DWORK_STAMP=${WORK_STAMP} -DUSE_SHELL= -jar ${SOLARVER}/${INPATH}/bin${UPDMINOREXT}/jpropex.jar "$@"
diff --git a/l10ntools/prj/build.lst b/l10ntools/prj/build.lst
index 8387154897b3..d8a2e8c00649 100644
--- a/l10ntools/prj/build.lst
+++ b/l10ntools/prj/build.lst
@@ -1,6 +1,7 @@
-tr l10ntools : tools LIBXSLT:libxslt BERKELEYDB:berkeleydb LUCENE:lucene NULL
+tr l10ntools : tools LIBXSLT:libxslt BERKELEYDB:berkeleydb LUCENE:lucene PYTHON:python NULL
tr l10ntools usr1 - all tr_mkout NULL
tr l10ntools\inc nmake - all tr_inc NULL
+tr l10ntools\scripts nmake - all tr_scripts NULL
tr l10ntools\source nmake - all tr_src tr_inc NULL
tr l10ntools\layout nmake - all rt_layout tr_src tr_inc NULL
tr l10ntools\java\jpropex nmake - all tr_blah NULL
diff --git a/l10ntools/prj/d.lst b/l10ntools/prj/d.lst
index 0b6a43444613..29dd21cee543 100644
--- a/l10ntools/prj/d.lst
+++ b/l10ntools/prj/d.lst
@@ -47,7 +47,20 @@ mkdir: %_DEST%\bin%_EXT%\help\com\sun\star\help
..\scripts\localize %_DEST%\bin%_EXT%\localize
..\scripts\fast_merge.pl %_DEST%\bin%_EXT%\fast_merge.pl
..\scripts\keyidGen.pl %_DEST%\bin%_EXT%\keyidGen.pl
-
+..\scripts\xtxex %_DEST%\bin%_EXT%\xtxex
+..\scripts\xhtex %_DEST%\bin%_EXT%\xhtex
+..\%__SRC%\bin\const.py %_DEST%\bin%_EXT%\const.py
+..\%__SRC%\bin\l10ntool.py %_DEST%\bin%_EXT%\l10ntool.py
+..\%__SRC%\bin\pseudo.py %_DEST%\bin%_EXT%\pseudo.py
+..\%__SRC%\bin\sdf.py %_DEST%\bin%_EXT%\sdf.py
+..\%__SRC%\bin\const.pyc %_DEST%\bin%_EXT%\const.pyc
+..\%__SRC%\bin\l10ntool.pyc %_DEST%\bin%_EXT%\l10ntool.pyc
+..\%__SRC%\bin\pseudo.pyc %_DEST%\bin%_EXT%\pseudo.pyc
+..\%__SRC%\bin\sdf.pyc %_DEST%\bin%_EXT%\sdf.pyc
+..\%__SRC%\bin\xhtex.py %_DEST%\bin%_EXT%\xhtex.py
+..\%__SRC%\bin\xtxex.py %_DEST%\bin%_EXT%\xtxex.py
+..\%__SRC%\bin\xhtex.pyc %_DEST%\bin%_EXT%\xhtex.pyc
+..\%__SRC%\bin\xtxex.pyc %_DEST%\bin%_EXT%\xtxex.pyc
..\inc\export.hxx %_DEST%\inc%_EXT%\l10ntools\export.hxx
..\inc\l10ntools\directory.hxx %_DEST%\inc%_EXT%\l10ntools\directory.hxx
..\inc\l10ntools\file.hxx %_DEST%\inc%_EXT%\l10ntools\file.hxx
diff --git a/l10ntools/scripts/keyidGen.pl b/l10ntools/scripts/keyidGen.pl
index 2a4ac5caefc3..53423c2d6f02 100644
--- a/l10ntools/scripts/keyidGen.pl
+++ b/l10ntools/scripts/keyidGen.pl
@@ -112,7 +112,7 @@ sub makenumber
$h = shift;
# 1 2 3 4
# 1234567890123456789012345678901234567890
- $symbols="0123456789abcdefghijklmnopqrstuvwxyz+-<=>";
+ $symbols="0123456789abcdefghijklmnopqrstuvwxyz+-[=]";
$order = length($symbols);
$result = "";
while ( length( $result ) < 6 )
diff --git a/l10ntools/scripts/localize.pl b/l10ntools/scripts/localize.pl
index 4aea1d933992..323f7fe549b6 100644..100755
--- a/l10ntools/scripts/localize.pl
+++ b/l10ntools/scripts/localize.pl
@@ -87,7 +87,6 @@ my @sdfparticles;
#### main ####
parse_options();
-check_modules_scm();
my $binpath = '';
if( defined $ENV{UPDMINOREXT} )
@@ -159,7 +158,7 @@ sub splitfile{
next if( $prj eq "binfilter" ); # Don't merge strings into binfilter module
chomp( $line );
- if( is_openoffice_module( $prj ) )
+ if( $force_ooo_module )
{
$string_hash_ooo { $lang }{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } = $line;
}
@@ -171,97 +170,26 @@ sub splitfile{
}
close( MYFILE );
- if( !defined $ENV{SRC_ROOT} ){
- print "Error, no SRC_ROOT in env found.\n";
+ if( !defined $ENV{SOURCE_ROOT_DIR} ){
+ print "Error, no SOURCE_ROOT_DIR in env found.\n";
exit( -1 );
}
- my $src_root = $ENV{SRC_ROOT};
- my $so_l10n_path = $src_root."/l10n_so/source";
- my $ooo_l10n_path = $src_root."/l10n/source";
+ my $src_root = $ENV{SOURCE_ROOT_DIR};
+ my $ooo_src_root = $ENV{SRC_ROOT};
+ my $so_l10n_path = $src_root."/sun/l10n_so/source";
+ my $ooo_l10n_path = $ooo_src_root."/l10n/source";
#print "$so_l10n_path\n";
#print "$ooo_l10n_path\n";
- write_sdf( \%string_hash_so , $so_l10n_path );
- write_sdf( \%string_hash_ooo , $ooo_l10n_path );
-
-}
-sub check_modules_scm
-{
- #my @ooo_modules;
- #my @so_modules;
- my $src_path = $ENV{ SRC_ROOT } ;
- my $last_dir = getcwd();
- chdir $src_path ;
- my @modules = <*/.svn/entries>;
-
- foreach my $module ( @modules )
+ if( $force_ooo_module )
{
- #print "$module \n";
- if( open ( FILE , "<$module" ) )
- {
- while( <FILE> )
- {
-
- my @path = split ( "/" , $module ) ;
-
- if( /svn.services.openoffice.org/ )
- {
- my $mod = $path[ 0 ];
- #push @ooo_modules , $mod;
- $is_ooo_module{ $mod } = "true";
- # print "$module -> ooo ";
- }
- elsif ( /jumbo2.germany.sun.com/ )
- {
- my $mod = $path[ 0 ];
- #push @so_modules , $mod;
- # print "$module -> so ";
- #$so_lookup_hash{ $mod } = "true";
- }
- #else
- #{
- # print "ERROR: Is $module a SO or OOo module? Can not parese the $module/.svn/entries file ... please check mwsfinnish/merge/splitsdf.pl line 280\n";
- # exit -1;
- #}
- }
- }
+ write_sdf( \%string_hash_ooo , $ooo_l10n_path );
+ }
+ else
+ {
+ write_sdf( \%string_hash_so , $so_l10n_path );
}
- chdir $last_dir ;
- #print "OOO\n";
- #print @ooo_modules;
- #print "\nSO\n";
- #print @so_modules;
-}
-
-
-#sub parse
-#{
-# my $command = "$CVS_BINARY -d:pserver:anoncvs\@anoncvs.services.openoffice.org:/cvs co -c";
-# my $output = `$command`;
-# my $rc = $? << 8;
-# if ( $output eq "" || $rc < 0 ){
-# print STDERR "ERROR: Can not fetch cvs alias list, please login to the cvs server and press at the password prompt just return\ncvs -d:pserver:anoncvs\@anoncvs.services.openoffice.org:/cvs login\n";
-# exit ( -1 );
-# }
-# my @list = split /\n/ , $output ;
-# foreach my $string( @list )
-# {
-#
-# # print "Found '$1'\n" , if( $string =~ /^(\w*)/ && $1 ne "" );
-#
-# $is_ooo_module{ $1 } = "TRUE", if( $string =~ /^(\w*)/ && $1 ne "" );
-# }
-# # foreach my $key( keys( %is_ooo_module ) )
-# #{
-# # print "$key\n";
-# #}
-#}
-sub is_openoffice_module
-{
- my $module = shift;
- return "TRUE", if ( $force_ooo_module || defined $is_ooo_module{ $module } );
- return "";
}
sub write_sdf
@@ -458,15 +386,9 @@ sub collectfiles{
# $| = 1;
STDOUT->autoflush( 1 );
- ### Search sdf particles
- #print STDOUT "### Searching sdf particles\n";
my $working_path = getcwd();
- #chdir $srcpath;
- #find ( { wanted => \&wanted , follow => 1 }, getcwd() );
- #chdir $working_path;
+ chdir $ENV{SOURCE_ROOT_DIR}, if defined $ENV{SOURCE_ROOT_DIR};
add_paths( $langhash_ref );
- #my $nFound = $#sdfparticles +1;
- #print "\n $nFound files found !\n";
my ( $LOCALIZEPARTICLE , $localizeSDF ) = File::Temp::tempfile();
close( $LOCALIZEPARTICLE );
@@ -491,7 +413,7 @@ sub collectfiles{
# -e
# if ( -x $command ){
if( $command ){
- if( !$bVerbose ){ $args .= " -QQ "; }
+ if( !$bVerbose ){ $args .= " "; }
$args .= " -e -f $localizeSDF -l ";
my $bFlag="";
if( $bAll ) {$args .= " en-US";}
@@ -590,7 +512,6 @@ sub collectfiles{
}
}
close ALLPARTICLES_MERGED;
-#***************
# Hash of array
my %output;
@@ -701,6 +622,7 @@ sub collectfiles{
close DESTFILE;
close LOCALIZEPARTICLE;
close ALLPARTICLES_MERGED;
+ chdir $working_path;
#print STDOUT "DBG: \$localizeSDF $localizeSDF \$particleSDF_merged $particleSDF_merged\n";
unlink $localizeSDF , $particleSDF_merged , $my_localize_log;
@@ -1154,22 +1076,3 @@ sub usage{
print STDERR "\nlocalize -m -l cs -f my.sdf\n( Merge cs translation into the sourcecode ) \n";
}
-# my $line = defined $_ ? $_ : '';
-# my $leftpart = defined $2 ? $2 : '';
-# my $prj = defined $3 ? $3 : '';
-# my $file = defined $4 ? $4 : '';
-# my $dummy = defined $5 ? $5 : '';
-# my $type = defined $6 ? $6 : '';
-# my $gid = defined $7 ? $7 : '';
-# my $lid = defined $8 ? $8 : '';
-# my $helpid = defined $9 ? $9 : '';
-# my $plattform = defined $10 ? $10 : '';
-# my $width = defined $11 ? $11 : '';
-# my $lang = defined $12 ? $12 : '';
-# my $rightpart = defined $13 ? $13 : '';
-# my $text = defined $14 ? $14 : '';
-# my $helptext = defined $15 ? $15 : '';
-# my $quickhelptext = defined $16 ? $16 : '';
-# my $title = defined $17 ? $17 : '';
-# my $timestamp = defined $18 ? $18 : '';
-
diff --git a/l10ntools/scripts/makefile.mk b/l10ntools/scripts/makefile.mk
new file mode 100644
index 000000000000..8bfa64e3fbad
--- /dev/null
+++ b/l10ntools/scripts/makefile.mk
@@ -0,0 +1,59 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+# Copy *.py files into output tree and call a script once to
+# force python to create the *.pyc files.
+
+PRJ=..
+TARGET = l10ntools_dummy_pyc
+
+.INCLUDE: settings.mk
+
+.IF "$(SYSTEM_PYTHON)"!="YES"
+PYTHON=$(AUGMENT_LIBRARY_PATH) $(WRAPCMD) $(SOLARBINDIR)/python
+.ELSE # "$(SYSTEM_PYTHON)"!="YES"
+PYTHON=$(AUGMENT_LIBRARY_PATH) $(WRAPCMD) python
+.ENDIF # "$(SYSTEM_PYTHON)"!="YES"
+
+PYFILES = $(BIN)$/const.py \
+ $(BIN)$/l10ntool.py \
+ $(BIN)$/pseudo.py \
+ $(BIN)$/sdf.py \
+ $(BIN)$/xhtex.py \
+ $(BIN)$/xtxex.py
+
+.INCLUDE: target.mk
+
+.IGNORE : create_pyc
+ALLTAR : create_pyc
+create_pyc : $(PYFILES)
+ @$(PYTHON) $(BIN)/xtxex.py >& /dev/null
+
+$(BIN)$/%.py : tool/%.py
+ @$(COPY) $< $@
+
+
diff --git a/l10ntools/scripts/tool/const.py b/l10ntools/scripts/tool/const.py
new file mode 100644
index 000000000000..2d514eabdab6
--- /dev/null
+++ b/l10ntools/scripts/tool/const.py
@@ -0,0 +1,39 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+# Pseudo const
+class _const:
+ class ConstError(TypeError): pass
+ def __setattr__(self, name, value):
+ if self.__dict__.has_key(name):
+ raise self.ConstError, "Can't rebind const(%s)"%name
+ self.__dict__[name] = value
+
+import sys
+sys.modules[__name__] = _const()
+
+
diff --git a/l10ntools/scripts/tool/l10ntool.py b/l10ntools/scripts/tool/l10ntool.py
new file mode 100644
index 000000000000..f1630027ccdc
--- /dev/null
+++ b/l10ntools/scripts/tool/l10ntool.py
@@ -0,0 +1,210 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+from optparse import OptionParser
+from sdf import SdfData
+from pseudo import PseudoSet
+
+import sys
+import os
+import shutil
+
+class AbstractL10nTool:
+ _options = {}
+ _args = ""
+ _resource_type = ""
+ _source_language = "en-US"
+
+ ##### Implement these abstract methods
+
+ ##### Nameing scheme for the output files
+ def get_outputfile_format_str(self):
+ # filename,fileNoExt,language,extension,pathPrefix,pathPostFix,path
+ #return "{path}/{fileNoExt}_{language}.{extension}"
+ return self._options.pattern
+
+ ################################# Merge single files ###########################################
+
+ ##### Merge a single file
+ def merge_file(self, inputfilename, outputfilename, parsed_file_ref, lang, is_forced_lang, sdfdata):
+ pass
+
+ ##### Helper for parse-once-use-often like parsing a xml file is needed implement it here
+ def parse_file(self, filename):
+ return None
+
+ ################### Merge one big file containing all strings in all languages #################
+ def merge_one_big_file(self, inputfile, outputfilename, parsed_file_ref, lang, sdfdata):
+ pass
+
+ ################### Extract a single File ######################################################
+ def extract_file(self, inputfile):
+ pass
+
+ ################################################################################################
+
+ def format_outputfile(self, filename, language):
+ extension = filename[filename.rfind('.')+1:]
+ file = filename[:filename.rfind('.')]
+ # Python 2.3.x friendly
+ return self.get_outputfile_format_str().replace('[', '%(').replace(']',')s') % \
+ { 'filename': filename, 'fileNoExt': file, 'language': language, 'extension': extension, 'path_prefix': self._options.path_prefix,
+ 'path_postfix': self._options.path_postfix, 'path': self.get_path() }
+
+ #return self.get_outputfile_format_str().replace('[', '{').replace(']','}').format(
+ # filename=filename, fileNoExt=file, language=language, extension=extension, path_prefix=self._options.path_prefix,
+ # path_postfix=self._options.path_postfix, path=self.get_path())
+
+ def get_path(self):
+ if self._options.outputfile.find('/') == -1:
+ return ""
+ else:
+ return self._options.outputfile[:self._options.outputfile.rfind('/')]
+
+ def merge(self, sdfdata):
+ langset,forcedset, foundset = PseudoSet(), PseudoSet() , PseudoSet()
+
+ if self._options.languages:
+ langset = PseudoSet(self._options.languages)
+ if self._options.forcedlanguages:
+ forcedset = PseudoSet(self._options.forcedlanguages)
+ if sdfdata.get_languages_found_in_sdf():
+ foundset = sdfdata.get_languages_found_in_sdf()
+
+ if self.has_multi_inputfiles():
+ filelist = self.read_inputfile_list()
+ else:
+ filelist = self._options.inputfile
+
+ for inputfile in filelist:
+ ref = self.parse_file(inputfile)
+ # Don't write that files if there is no l10n present
+ if ((langset & foundset) - forcedset): # all langs given and found in sdf without enforced
+ [self.merge_file(inputfile,self.format_outputfile(inputfile, lang), ref, lang, False, sdfdata) for lang in ((langset & foundset) - forcedset)]
+ # Always write those files even if there is no l10n available
+ if forcedset: # all enforced langs
+ [self.merge_file(inputfile, self.format_outputfile(inputfile, lang), ref, lang, True, sdfdata) for lang in forcedset]
+ # In case a big file have to be written
+ if ((langset & foundset) | forcedset): # all langs given ,found in sdf and enforced ones
+ self.merge_one_big_file(inputfile, self.format_outputfile(inputfile, lang), ref, ((langset & foundset) | forcedset), sdfdata)
+
+ def has_multi_inputfiles(self):
+ return self._options.inputfile[0] == '@'
+
+ def copy_file(self, inputfilename, outputfilename):
+ try:
+ shutil.copy(inputfilename, outputfilename)
+ except IOError:
+ print "ERROR: Can not copy file '" + inputfilename + "' to " + "'" + outputfilename + "'"
+ sys.exit(-1)
+
+ def extract(self):
+ try:
+ f = open(self._options.outputfile, "w+")
+ f.write(self.extract_file(self._options.inputfile))
+ except IOError:
+ print "ERROR: Can not write file " + self._options.outputfile
+ else:
+ f.close()
+
+ # Parse the common options
+ def parse_options(self):
+ parser = OptionParser()
+ parser.add_option("-i", "--inputfile", dest="inputfile", metavar="FILE", help="resource file to read" )
+ parser.add_option("-o", "--outputfile", dest="outputfile", metavar="FILE", help="extracted sdf or merged file" )
+ parser.add_option("-m", "--inputsdffile", dest="input_sdf_file", metavar="FILE", help="merge this sdf file" )
+ parser.add_option("-x", "--pathprefix", dest="path_prefix", metavar="PATH", help="" )
+ parser.add_option("-y", "--pathpostfix", dest="path_postfix", metavar="PATH", help="" )
+ parser.add_option("-p", "--projectname", dest="project_name", metavar="NAME", help="" )
+ parser.add_option("-r", "--projectroot", dest="project_root", metavar="PATH", help="" )
+ parser.add_option("-f", "--forcedlanguages", dest="forcedlanguages", metavar="ISOCODE[,ISOCODE]", help="Always merge those langs even if no l10n is available for those langs" )
+ parser.add_option("-l", "--languages", dest="languages", metavar="ISOCODE[,ISOCODE]", help="Merge those langs if l10n is found for each")
+ parser.add_option("-s", "--pattern", dest="pattern", metavar="", help="" )
+ parser.add_option("-q", "--quiet", action="store_true", dest="quietmode", help="",default=False)
+ (self._options, self.args) = parser.parse_args()
+
+ # -l "de,pr,pt-BR" => [ "de" , "pt" , "pt-BR" ]
+ parse_complex_arg = lambda arg: arg.split(",")
+
+ if self._options.forcedlanguages:
+ self._options.forcedlanguages = parse_complex_arg(self._options.forcedlanguages)
+ if self._options.languages:
+ self._options.languages = parse_complex_arg(self._options.languages)
+ self.test_options()
+
+ def __init__(self):
+ self.parse_options()
+ if self._options.input_sdf_file != None and len(self._options.input_sdf_file):
+ sdfdata = SdfData(self._options.input_sdf_file)
+ sdfdata.read()
+ self.merge(sdfdata)
+ else:
+ self.extract()
+
+ def make_dirs(self, filename):
+ dir = filename[:filename.rfind('/')]
+ if os.path.exists(dir):
+ if os.path.isfile(dir):
+ print "ERROR: There is a file '"+dir+"' where I want create a directory"
+ sys.exit(-1)
+ else:
+ return
+ else:
+ try:
+ os.makedirs(dir)
+ except IOError:
+ print "Error: Can not create dir " + dir
+ sys.exit(-1)
+
+ def test_options(self):
+ opt = self._options
+ is_valid = lambda x: x != None and len(x) > 0
+ return is_valid(opt.project_root) and is_valid(opt.project_name) and is_valid(opt.languages) and \
+ ( is_valid(opt.inputfile) and (( is_valid(opt.path_prefix) and is_valid(opt.path_postfix) ) or is_valid(opt.outputfile)) and \
+ ( ( is_valid(opt.input_sdf_file) and ( is_valid(opt.outputfile) or ( is_valid(opt.path_prefix) and is_valid(opt.path_postfix) ) or \
+ ( is_valid(opt.inputfile) and is_valid(opt.outputFile)) ))))
+ print "Strange options ..."
+ sys.exit( -1 )
+
+ def read_inputfile_list(self):
+ if self.has_multi_inputfiles():
+ lines = []
+ try:
+ f = open(self._options.inputfile[1:], "r")
+ lines = [line.strip('\n') for line in f.readlines()]
+ except IOError:
+ print "ERROR: Can not read file list " + self._options.inputfile[2:]
+ sys.exit(-1)
+ else:
+ f.close()
+ return lines
+
+ def get_filename_string(self, inputfile):
+ absfile = os.path.realpath(os.path.abspath(inputfile))
+ absroot = os.path.realpath(os.path.abspath(self._options.project_root))
+ return absfile[len(absroot)+1:].replace('/','\\')
+
diff --git a/l10ntools/scripts/tool/pseudo.py b/l10ntools/scripts/tool/pseudo.py
new file mode 100644
index 000000000000..0956325e31db
--- /dev/null
+++ b/l10ntools/scripts/tool/pseudo.py
@@ -0,0 +1,184 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+# to support macosx baseline machines from Cretaceous period
+
+# incomplete set() class implementation of Python 2.4
+class PseudoSet:
+ _list = []
+
+ def __str__(self):
+ return str(self._list)
+
+ def __init__(self, newlist=[]):
+ self._list = self._remove_dupes(newlist)
+
+ def __or__(self, other):
+ tmplist = []
+ if self._list != None and other != None:
+ tmplist.extend(self._list)
+ tmplist.extend(other)
+ return PseudoSet(self._remove_dupes(tmplist))
+ else:
+ print "__or__(None)"
+
+ def __sub__(self,other):
+ tmplist = []
+ if self._list != None and other != None:
+ tmplist.extend(self._list)
+ [tmplist.remove(key) for key in other if key in tmplist]
+ else:
+ print "__sub__(none)"
+ return PseudoSet(tmplist)
+
+ def __and__(self, other):
+ tmplist = []
+ if other != None and self._list != None:
+ [tmplist.append(key) for key in self._list if key in other]
+ return PseudoSet(tmplist)
+ else:
+ print "__and__(None)"
+
+ def __iter__(self):
+ return self._list.__iter__()
+
+ def __items__(self):
+ return self._list.items()
+
+ def __keys__(self):
+ return keys(self._list)
+
+ def _remove_dupes(self, list):
+ tmpdict = {}
+ for key in list:
+ tmpdict[key] = 1
+ return tmpdict.keys()
+
+# incomplete OrderedDict() class implementation
+class PseudoOrderedDict(dict):
+ _keylist = []
+ _valuelist = []
+
+ def __init__(self, defaults={}):
+ dict.__init__(self)
+ for n,v in defaults.items():
+ self[n] = v
+
+ def __setitem__(self, key, value):
+ self._keylist.append(key)
+ self._valuelist.append(value)
+ return dict.__setitem__(self, key, value)
+
+ def __delattr__(self, key):
+ self._keylist.__delattr__(key)
+ self._valuelist.__delattr__(dict[key])
+ return dict.__delattr__(self, key)
+
+ def __delitem__(self, key):
+ self._keylist.__delitem__(key)
+ self._valuelist.__delitem__(dict[key])
+ return dict.__delitem__(self, key)
+
+ def __iter__(self):
+ raise NotImplementedError("__iter__")
+
+ def __iterkeys__(self):
+ return self._keylist
+
+ def iteritems(self):
+ #return self._valuelist
+ return zip(self._keylist, self._valuelist)
+
+ def items(self):
+ return zip(self._keylist,self._valuelist)
+
+ def __keys__(self):
+ return self._keylist
+
+ def keys(self):
+ return self._keylist
+
+ def __keysattr__(self):
+ return self._keylist
+
+ def pop(self, key):
+ self._keylist.pop(key)
+ self._valuelist.pop(key)
+ return dict.__pop__(self, key)
+
+ def popitem(self):
+ raise NotImplementedError("popitem")
+
+def _testdriver_set():
+ list, list1 = [] ,[]
+ list.append("a")
+ list.append("b")
+ list.append("c")
+
+ list1.append("a")
+ list1.append("b")
+ list1.append("d")
+ list1.append("e")
+ list1.append("e")
+
+ if "a" in list:
+ print "YEAH!"
+
+ a = PseudoSet(list)
+ b = PseudoSet(list1)
+
+ print "a="+str(a)
+ print "b="+str(b)
+ print "a|b=" + str(a|b)
+ print "a="+str(a)
+ print "b="+str(b)
+ print "a&b=" + str(a&b)
+ print "a="+str(a)
+ print "b="+str(b)
+ print "a-b" + str(a-b)
+
+ for key in a:
+ print key
+
+def _testdriver_dict():
+ d = PseudoOrderedDict()
+ d["a"] = 1
+ d["b"] = 2
+ d["c"] = 3
+ d["d"] = 4
+ d["e"] = 5
+ d["f"] = 6
+
+ print "a="+str(d["a"])
+ print "e="+str(d["e"])
+ for key,value in d.iteritems():
+ print "d["+key+"]="+str(d[key])
+ print "key="+str(key)+" value="+str(value)
+
+ print "keys="+str(d.keys())
+
+#_testdriver_dict()
diff --git a/l10ntools/scripts/tool/sdf.py b/l10ntools/scripts/tool/sdf.py
new file mode 100644
index 000000000000..96afbed1452c
--- /dev/null
+++ b/l10ntools/scripts/tool/sdf.py
@@ -0,0 +1,170 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+from pseudo import PseudoSet,PseudoOrderedDict
+from time import gmtime, strftime
+
+class SdfData:
+ _filename = "";
+ _dict = PseudoOrderedDict()
+ _languages_found = [];
+
+ def __init__ (self, filename=""):
+ self._filename = filename
+
+ def __getitem__(self, key):
+ if self._dict.has_key(key):
+ return self._dict[key]
+ else:
+ return None
+
+ def has_key(self, key):
+ return self._dict.has_key(key)
+
+ def __setitem__(self, key, value):
+ self._dict[key] = value
+
+ def get_languages_found_in_sdf(self):
+ return PseudoSet(self._languages_found)
+
+ def read(self):
+ try:
+ f = open(self._filename, "r")
+ lines = [line.rstrip('\n') for line in f.readlines()]
+ except IOError:
+ print "ERROR: Trying to read "+ self._filename
+ raise
+ else:
+ f.close()
+ for line in lines:
+ entity = SdfEntity()
+ entity.set_properties(line)
+ self._dict[entity.get_id()] = entity
+ self._languages_found.append(entity.langid)
+
+ def write(self, filename):
+ try:
+ f = open(filename, "w+")
+ for value in self._dict.itervalues():
+ #f.write( repr(value)+"\n" )
+ f.write(value + "\n")
+ except IOError:
+ print "ERROR: Trying to write " + filename
+ raise
+ else:
+ f.close()
+
+import sys
+class SdfEntity:
+ # Sdf format columns
+ project = ""
+ source_file = ""
+ dummy1 = ""
+ resource_type = ""
+ gid = ""
+ lid = ""
+ helpid = ""
+ platform = ""
+ dummy2 = ""
+ langid = ""
+ text = ""
+ helptext = ""
+ quickhelptext = ""
+ title = ""
+ date = ""
+
+ import const
+ const._PROJECT_POS = 0
+ const._SOURCE_FILE_POS = 1
+ const._DUMMY1_POS = 2
+ const._RESOURCE_TYPE_POS = 3
+ const._GID_POS = 4
+ const._LID_POS = 5
+ const._HELPID_POS = 6
+ const._PLATFORM_POS = 7
+ const._DUMMY2_POS = 8
+ const._LANGID_POS = 9
+ const._TEXT_POS = 10
+ const._HELPTEXT_POS = 11
+ const._QUICKHELPTEXT_POS = 12
+ const._TITLE_POS = 13
+ const._DATE_POS = 14
+
+ def __init__(self, project="", source_file="", dummy1="0", resource_type="", gid="", lid="", helpid="", platform="", dummy2="0", langid="",
+ text="", helptext="", quickhelptext="", title="", date=""):
+ self.project = project;
+ self.source_file = source_file;
+ self.dummy1 = dummy1;
+ self.resource_type = resource_type;
+ self.gid = gid;
+ self.lid = lid;
+ self.helpid = helpid;
+ self.platform = platform;
+ self.dummy2 = dummy2;
+ self.langid = langid;
+ self.text = text;
+ self.helptext = helptext;
+ self.quickhelptext = quickhelptext;
+ self.title = title;
+ if date != "":
+ self.date = date;
+ else:
+ self.date = strftime("%Y-%m-%d %H:%M:%S",gmtime())
+
+
+ def set_properties(self, line):
+ splitted = line.split("\t")
+ if len(splitted) == 15:
+ self.project = splitted[ self.const._PROJECT_POS ]
+ self.source_file = splitted[ self.const._SOURCE_FILE_POS ]
+ self.dummy1 = splitted[ self.const._DUMMY1_POS ]
+ self.resource_type = splitted[ self.const._RESOURCE_TYPE_POS ]
+ self.gid = splitted[ self.const._GID_POS ]
+ self.lid = splitted[ self.const._LID_POS ]
+ self.helpid = splitted[ self.const._HELPID_POS ]
+ self.platform = splitted[ self.const._PLATFORM_POS ]
+ self.dummy2 = splitted[ self.const._DUMMY2_POS ]
+ self.langid = splitted[ self.const._LANGID_POS ]
+ self.text = splitted[ self.const._TEXT_POS ]
+ self.helptext = splitted[ self.const._HELPTEXT_POS ]
+ self.quickhelptext = splitted[ self.const._QUICKHELPTEXT_POS ]
+ self.title = splitted[ self.const._TITLE_POS ]
+ self.date = splitted[ self.const._DATE_POS ]
+
+ def get_file_id(self):
+ return self.project + "\\" + self.source_file
+
+ def get_resource_path(self):
+ return self.source_file[0:self.source_file.rfind( "\\" )-1]
+
+ def __str__(self):
+ return ''.join([self.project, "\t", self.source_file, "\t", self.dummy1, "\t", self.resource_type, "\t" ,
+ self.gid, "\t", self.lid, "\t", self.helpid, "\t", self.platform, "\t", self.dummy2, "\t" , self.langid,
+ "\t", self.text, "\t", self.helptext, "\t", self.quickhelptext, "\t" , self.title, "\t", self.date ])
+
+ def get_id(self):
+ return ''.join([self.project, self.gid, self.lid, self.source_file, self.resource_type, self.platform, self.helpid, self.langid])
diff --git a/l10ntools/scripts/tool/xhtex.py b/l10ntools/scripts/tool/xhtex.py
new file mode 100644
index 000000000000..d916fc675944
--- /dev/null
+++ b/l10ntools/scripts/tool/xhtex.py
@@ -0,0 +1,136 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+from l10ntool import AbstractL10nTool
+from sdf import SdfEntity
+import sys
+import xml.dom.minidom
+
+class Xhtex(AbstractL10nTool):
+ _resource_type = "xht"
+ _sdfdata = ()
+ _lang = ""
+
+ # Extract methods
+ def extract_topic(self, list, inputfile):
+ topics = []
+ for elem in list:
+ if elem.childNodes[0].nodeType == elem.TEXT_NODE and len(elem.childNodes[0].data.strip()):
+ topics.append(self.prepare_sdf_line(id=elem.getAttribute("id").strip(), text=elem.childNodes[0].data, inputfile=inputfile))
+ return topics
+
+ def extract_title(self, list, inputfile):
+ titles = []
+ for elem in list:
+ if len(elem.getAttribute("title").strip()):
+ titles.append(self.prepare_sdf_line(id=elem.getAttribute("id").strip(), text=elem.getAttribute("title").strip(), inputfile=inputfile))
+ return titles
+
+ # Merge methods
+ def merge_topic(self, list, sdfdata, lang, inputfilename, dom):
+ for elem in list:
+ if elem.childNodes[0].nodeType == elem.TEXT_NODE and elem.getAttribute("id").strip():
+ obj = self.prepare_sdf_line(inputfile=inputfilename, lang=lang, id=elem.getAttribute("id").strip())
+ if sdfdata[obj.get_id()]:
+ elem.childNodes[0].data = unicode(str(sdfdata[obj.get_id()].text),"utf8")
+
+
+ def merge_title(self, list, sdfdata, lang, inputfilename):
+ for elem in list:
+ obj = self.prepare_sdf_line(inputfile=inputfilename, lang=lang, id=elem.getAttribute("id").strip())
+ if elem.getAttribute("id").strip() and sdfdata[obj.get_id()]:
+ elem.setAttribute("title", unicode(str(sdfdata[obj.get_id()].text),"utf8"))
+
+ # L10N tool
+ def __init__(self):
+ AbstractL10nTool.__init__(self)
+
+ def parse_file(self, filename):
+ document = ""
+ try:
+ f = open(filename, "r+")
+ document = f.read()
+ except IOError:
+ print "ERROR: Can not read file " + filename
+ sys.exit(-1)
+ else:
+ f.close()
+ return xml.dom.minidom.parseString(document)
+
+
+ def merge_file(self, inputfilename, outputfilename, parsed_file_ref, lang,is_forced_lang, sdfdata):
+ if lang == "en-US":
+ mod_outputfilename = outputfilename.replace("_en-US",'')
+ self.make_dirs(mod_outputfilename)
+ self.copy_file(inputfilename, mod_outputfilename)
+ return
+ dom = parsed_file_ref.cloneNode(True)
+ #dom = self.parse_file(inputfilename) # in case cloneNode is buggy just parse it always
+
+ self.merge_topic(dom.getElementsByTagName("topic"), sdfdata, lang, inputfilename, dom)
+ self.merge_title(dom.getElementsByTagName("node"), sdfdata, lang, inputfilename)
+ self.merge_title(dom.getElementsByTagName("help_section"), sdfdata, lang, inputfilename)
+ self.make_dirs(outputfilename)
+ try:
+ f = open(outputfilename, "w+")
+ str = dom.toxml()
+ f.write(str.encode("utf-8"))
+ except IOError:
+ print "ERROR: Can not write file " + outputfilename
+ sys.exit(-1)
+ else:
+ f.close()
+
+ ##### Helper for parse-once-use-often like parsing a xml file is needed implement it here
+ def parse_file(self, filename):
+ document = ""
+ try:
+ f = open(filename,"r")
+ document = f.read()
+ except IOError:
+ print "ERROR: Can not read file " + filename
+ else:
+ f.close()
+ return xml.dom.minidom.parseString(document)
+
+ ##### Extract a single File
+ def extract_file(self, inputfile):
+ sdf_data = []
+ dom = self.parse_file(inputfile)
+ sdf_data.extend(self.extract_topic(dom.getElementsByTagName("topic"), inputfile))
+ sdf_data.extend(self.extract_title(dom.getElementsByTagName("help_section"), inputfile))
+ sdf_data.extend(self.extract_title(dom.getElementsByTagName("node"), inputfile))
+ return ''.join([str(line)+"\n" for line in sdf_data])
+
+ def prepare_sdf_line(self, inputfile="", lang="" , id="" , text=""):
+ if lang == "":
+ lang = self._source_language
+ return SdfEntity(project=self._options.project_name, source_file=self.get_filename_string(inputfile),
+ resource_type=self._resource_type, gid=id, lid="", langid=lang,text=text)
+
+run = Xhtex()
+
diff --git a/l10ntools/scripts/tool/xtxex.py b/l10ntools/scripts/tool/xtxex.py
new file mode 100644
index 000000000000..96912754b7df
--- /dev/null
+++ b/l10ntools/scripts/tool/xtxex.py
@@ -0,0 +1,94 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+from l10ntool import AbstractL10nTool
+from sdf import SdfEntity
+import sys
+import shutil
+
+class Xtxex(AbstractL10nTool):
+ _resource_type = "xtx"
+
+ def __init__(self):
+ AbstractL10nTool.__init__(self)
+
+ def merge_file(self, inputfilename, outputfilename, parsed_file_ref, lang, is_forced_lang, sdfdata):
+ # Special handling for en-US files
+ if lang == "en-US":
+ mod_outputfilename = outputfilename
+ # mod here if needed
+ self.copy_file(inputfilename, mod_outputfilename)
+ return
+ # merge usual lang
+ sdfline = self.prepare_sdf_line(inputfilename,lang)
+ if sdfdata.has_key(sdfline.get_id()):
+ line = sdfdata[sdfline.get_id()].text.replace("\\n", '\n')
+ self.make_dirs(outputfilename)
+ try:
+ f = open(outputfilename, "w+")
+ f.write(line)
+ except IOError:
+ print "ERROR: Can not write file " + outputfilename
+ sys.exit(-1)
+ else:
+ f.close()
+ return
+ # no sdf data found then copy en-US source file
+ if is_forced_lang:
+ self.copy_file(inputfilename, outputfilename)
+
+ ##### Extract a single File
+ def extract_file(self, inputfile):
+ lines = []
+ try:
+ f = open(inputfile, "r")
+ lines = f.readlines()
+ except IOError:
+ print "ERROR: Can not open file " + inputfile
+ sys.exit(-1)
+ else:
+ f.close()
+ # remove legal header
+ lines = [line for line in lines if len(line) > 0 and not line[0] == '#']
+ # escape all returns
+ lines = [line.replace('\n', "\\n") for line in lines]
+ line = ''.join(lines)
+ test = str(line)
+ if len(test.strip()):
+ sdf_entity = self.prepare_sdf_line(inputfile);
+ sdf_entity.text = line
+ return str(sdf_entity)
+ else:
+ return ""
+
+ def prepare_sdf_line(self, inputfile="", lang=""):
+ if lang == "":
+ lang = self._source_language
+ return SdfEntity(project=self._options.project_name, source_file=self.get_filename_string(inputfile),
+ resource_type=self._resource_type, gid="none", lid="none", langid=lang,text="")
+
+run = Xtxex()
diff --git a/l10ntools/scripts/xhtex b/l10ntools/scripts/xhtex
new file mode 100755
index 000000000000..5409f179777d
--- /dev/null
+++ b/l10ntools/scripts/xhtex
@@ -0,0 +1,46 @@
+#!/bin/sh
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+if [ x${SOLARENV}x = xx ]; then
+ echo No environment found, please use 'setsolar'
+exit 1
+fi
+
+if [ ${GUI} = "WNT" ]; then
+if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx ]; then
+ exec python $SOLARVERSION/$INPATH/bin/xhtex.py "$@"
+else
+ exec python $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xhtex.py "$@"
+fi
+else
+if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx ]; then
+ exec python $SOLARVERSION/$INPATH/bin/xhtex.py "$@"
+else
+ exec python $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xhtex.py "$@"
+fi
+fi
diff --git a/l10ntools/scripts/xtxex b/l10ntools/scripts/xtxex
new file mode 100755
index 000000000000..39da89fd81ce
--- /dev/null
+++ b/l10ntools/scripts/xtxex
@@ -0,0 +1,47 @@
+#!/bin/sh
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+if [ x${SOLARENV}x = xx ]; then
+ echo No environment found, please use 'setsolar'
+exit 1
+fi
+
+if [ ${GUI} = "WNT" ]; then
+if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx ]; then
+ exec python $SOLARVERSION/$INPATH/bin/xtxex.py "$@"
+else
+ exec python $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xtxex.py "$@"
+fi
+else
+if [ x${SOLARVER}x = xx -o x${UPDMINOREXT}x = xx ]; then
+ exec python $SOLARVERSION/$INPATH/bin/xtxex.py "$@"
+else
+ exec python $SOLARVERSION/$INPATH/bin$UPDMINOREXT/xtxex.py "$@"
+fi
+fi
+
diff --git a/l10ntools/source/cfglex.l b/l10ntools/source/cfglex.l
index cc92632620be..3fc3aa5b965c 100644
--- a/l10ntools/source/cfglex.l
+++ b/l10ntools/source/cfglex.l
@@ -169,10 +169,6 @@ main( int argc, char* argv[])
FILE *pFile;
pOutput = GetOutputFile( argc, argv );
- if( !isQuiet() ){
- fprintf( stdout, "\nCfgEx 0.9 Copyright 2000, 2010 Oracle and/or its affiliates. All Rights Reserved.\n" );
- fprintf( stdout, "===================================================================================\n" );
- }
if ( !pOutput ) {
fprintf( stdout, "Syntax: CFGEX[-p Prj][-r PrjRoot]-i FileIn [-o FileOut][-m DataBase][-e][-b][-u][-f][-d DoneFile][-g[:dtd] ][-L l1,l2,...]\n" );
@@ -181,7 +177,6 @@ main( int argc, char* argv[])
fprintf( stdout, " FileIn: Source files (*.src)\n" );
fprintf( stdout, " FileOut: Destination file (*.*)\n" );
fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
- fprintf( stdout, " -QQ: quiet output\n" );
fprintf( stdout, " -e: Disable writing errorlog\n" );
fprintf( stdout, " -b: Break when Token \"HelpText\" found in source\n" );
fprintf( stdout, " -u: [english] and [german] are allowed, Id is Taken from DataBase \n" );
@@ -213,20 +208,10 @@ main( int argc, char* argv[])
nRetValue = GetError();
EndCfgExport();
- if( !isQuiet() ){
- fprintf( stdout, "\n===================================\n\n" );
- }
removeTempFile();
/* return error level */
return nRetValue;
}
-/*"<!--"[^"-->"]*"-->" {
- bText = 0;
- WorkOnTokenSet( COMMEND, yytext );
-}*/
-/*"<!"[^\-].*\> {
- bText = 0;
- WorkOnTokenSet( CFG_TAG, yytext );
-}*/
+
diff --git a/l10ntools/source/cfgmerge.cxx b/l10ntools/source/cfgmerge.cxx
index a0b40332edca..6b161ea9be8f 100644
--- a/l10ntools/source/cfgmerge.cxx
+++ b/l10ntools/source/cfgmerge.cxx
@@ -59,7 +59,6 @@ sal_Bool bMergeMode;
sal_Bool bErrorLog;
sal_Bool bForce;
sal_Bool bUTF8;
-bool bQuiet;
ByteString sPrj;
ByteString sPrjRoot;
ByteString sInputFileName;
@@ -83,7 +82,6 @@ extern char *GetOutputFile( int argc, char* argv[])
bErrorLog = sal_True;
bForce = sal_False;
bUTF8 = sal_True;
- bQuiet = false;
sPrj = "";
sPrjRoot = "";
sInputFileName = "";
@@ -128,9 +126,6 @@ extern char *GetOutputFile( int argc, char* argv[])
nState = STATE_FORCE;
bForce = sal_True;
}
- else if ( sSwitch == "-QQ" ) {
- bQuiet = true;
- }
else if ( sSwitch == "-L" ) {
nState = STATE_LANGUAGES;
}
@@ -184,10 +179,6 @@ extern char *GetOutputFile( int argc, char* argv[])
// command line is not valid
return NULL;
}
-int isQuiet(){
- if( bQuiet ) return 1;
- else return 0;
-}
/*****************************************************************************/
int InitCfgExport( char *pOutput , char* pFilename )
/*****************************************************************************/
@@ -247,7 +238,7 @@ extern FILE *GetCfgFile()
if ( !pFile ){
fprintf( stderr, "Error: Could not open file %s\n",
sInputFileName.GetBuffer());
- exit( 13 );
+ exit( -13 );
}
else {
// this is a valid file which can be opened, so
@@ -264,8 +255,6 @@ extern FILE *GetCfgFile()
// printf("sFullEntry = %s\n",sFullEntry.GetBuffer());
sActFileName = sFullEntry.Copy( sPrjEntry.Len() + 1 );
// printf("sActFileName = %s\n",sActFileName.GetBuffer());
- if( !bQuiet )
- fprintf( stdout, "\nProcessing File %s ...\n", sInputFileName.GetBuffer());
sActFileName.SearchAndReplaceAll( "/", "\\" );
@@ -488,7 +477,7 @@ int CfgParser::ExecuteAnalyzedToken( int nToken, char *pToken )
ByteString sTemp( sToken );
sTemp.ToUpperAscii();
bLocalize = (( sTemp.Search( "CFG:TYPE=\"STRING\"" ) != STRING_NOTFOUND ) &&
- ( sTemp.Search( "CFG:LOCALIZED=\"TRUE\"" ) != STRING_NOTFOUND ));
+ ( sTemp.Search( "CFG:LOCALIZED=\"sal_True\"" ) != STRING_NOTFOUND ));
}
}
else if ( sTokenName == "label" ) {
@@ -615,7 +604,7 @@ CfgOutputParser::CfgOutputParser( const ByteString &rOutputFile )
Error( sError );
delete pOutputStream;
pOutputStream = NULL;
- exit( 13 );
+ exit( -13 );
}
}
diff --git a/l10ntools/source/export.cxx b/l10ntools/source/export.cxx
index 36ec7985a26a..7d145f768f99 100644
--- a/l10ntools/source/export.cxx
+++ b/l10ntools/source/export.cxx
@@ -62,7 +62,6 @@ sal_Bool bErrorLog;
sal_Bool bBreakWhenHelpText;
sal_Bool bUnmerge;
sal_Bool bUTF8;
-bool bQuiet;
ByteString sPrj;
ByteString sPrjRoot;
ByteString sActFileName;
@@ -98,7 +97,6 @@ extern char *GetOutputFile( int argc, char* argv[])
Export::sForcedLanguages = "";
sTempFile = "";
pTempFile = NULL;
- bQuiet = false;
sal_uInt16 nState = STATE_NON;
sal_Bool bInput = sal_False;
@@ -115,9 +113,6 @@ extern char *GetOutputFile( int argc, char* argv[])
else if (sSwitch == "-p" || sSwitch == "-P" ) {
nState = STATE_PRJ; // next token specifies the cur. project
}
- else if (sSwitch == "-qq" || sSwitch == "-QQ" ) {
- bQuiet = true;
- }
else if (sSwitch == "-r" || sSwitch == "-R" ) {
nState = STATE_ROOT; // next token specifies path to project root
@@ -196,12 +191,6 @@ extern char *GetOutputFile( int argc, char* argv[])
return NULL;
}
/*****************************************************************************/
-int isQuiet(){
-/*****************************************************************************/
- if( bQuiet ) return 1;
- else return 0;
-}
-/*****************************************************************************/
int InitExport( char *pOutput , char* pFilename )
/*****************************************************************************/
{
@@ -282,7 +271,6 @@ extern FILE *GetNextFile()
// (e.g.: source\ui\src\menue.src)
sActFileName = sFullEntry.Copy( sPrjEntry.Len() + 1 );
- if( !bQuiet ) fprintf( stdout, "\nProcessing File %s ...\n", sOrigFile.GetBuffer());
sActFileName.SearchAndReplaceAll( "/", "\\" );
sFile = sActFileName;
diff --git a/l10ntools/source/export2.cxx b/l10ntools/source/export2.cxx
index b6c42d27303c..e09ed0eff1b2 100644
--- a/l10ntools/source/export2.cxx
+++ b/l10ntools/source/export2.cxx
@@ -703,11 +703,6 @@ void Export::getRandomName( ByteString& sRandStr )
DirEntry Export::GetTempFile()
/*****************************************************************************/
{
-#if defined(WNT) || defined(OS2)
- String sTempDir( Export::GetEnv( "TEMP" ), RTL_TEXTENCODING_ASCII_US );
-#else
- String sTempDir( String::CreateFromAscii( "/tmp" ));
-#endif
rtl::OUString* sTempFilename = new rtl::OUString();
// Create a temp file
diff --git a/l10ntools/source/help/HelpIndexerTool.java b/l10ntools/source/help/HelpIndexerTool.java
index 2a49f964d48f..a39b5399e38d 100644
--- a/l10ntools/source/help/HelpIndexerTool.java
+++ b/l10ntools/source/help/HelpIndexerTool.java
@@ -72,6 +72,9 @@ public class HelpIndexerTool
String aSegmentName = "";
// Scan arguments
+ //If this tool is invoked in the build process for extensions help,
+ //then -extension must be set.
+ boolean bExtension = false;
boolean bLang = false;
boolean bMod = false;
boolean bZipDir = false;
@@ -83,7 +86,11 @@ public class HelpIndexerTool
int nArgCount = args.length;
for( int i = 0 ; i < nArgCount ; i++ )
{
- if( "-lang".equals(args[i]) )
+ if( "-extension".equals(args[i]) )
+ {
+ bExtension = true;
+ }
+ else if( "-lang".equals(args[i]) )
{
if( i + 1 < nArgCount )
{
@@ -142,20 +149,21 @@ public class HelpIndexerTool
bSegmentName = true;
}
i++;
- if (!(bCfsName && bSegmentName))
- {
- System.out.println("Usage: HelpIndexer -checkcfsandsegname _0 _3 (2 arguments needed)");
- System.exit( -1 );
- }
+ if (!(bCfsName && bSegmentName))
+ {
+ System.out.println("Usage: HelpIndexer -checkcfsandsegname _0 _3 (2 arguments needed)");
+ System.exit( -1 );
+ }
}
}
- if( !bLang || !bMod || !bZipDir || (!bOutput && !bExtensionMode) )
+ if( !bLang || !bMod || !bZipDir || (!bOutput && !bExtensionMode && !bExtension) )
{
if( bExtensionMode )
return;
System.out.println("Usage: HelpIndexer -lang ISOLangCode -mod HelpModule -zipdir TempZipDir -o OutputZipFile");
+ System.out.println("Usage: HelpIndexer -extension -lang ISOLangCode -mod HelpModule -zipdir PathToLangDir");
System.exit( -1 );
}
@@ -199,7 +207,7 @@ public class HelpIndexerTool
System.out.println( "Checking segment file " + aSegmentName+ ": " + (bSegmentFileOk ? "Found" : "Not found") );
}
- if( bExtensionMode )
+ if( bExtensionMode || bExtension)
{
if( !bSrcDir )
{
diff --git a/l10ntools/source/help/HelpLinker.cxx b/l10ntools/source/help/HelpLinker.cxx
index 9eed9132a5ec..8e6976c0efd1 100644
--- a/l10ntools/source/help/HelpLinker.cxx
+++ b/l10ntools/source/help/HelpLinker.cxx
@@ -245,7 +245,11 @@ class HelpLinker
{
public:
void main(std::vector<std::string> &args,
- std::string* pExtensionPath = NULL, const rtl::OUString* pOfficeHelpPath = NULL )
+// std::string* pExtensionPath = NULL, const rtl::OUString* pOfficeHelpPath = NULL )
+ std::string* pExtensionPath = NULL,
+ std::string* pDestination = NULL,
+ const rtl::OUString* pOfficeHelpPath = NULL )
+
throw( HelpProcessingException );
HelpLinker()
@@ -265,13 +269,14 @@ private:
fs::path idxContentStylesheet;
fs::path zipdir;
fs::path outputFile;
+ std::string extsource;
+ std::string extdestination;
std::string module;
std::string lang;
- std::string hid;
std::string extensionPath;
+ std::string extensionDestination;
bool bExtensionMode;
fs::path indexDirName;
- Stringtable hidlistTranslation;
fs::path indexDirParentName;
bool init;
IndexerPreProcessor* m_pIndexerPreProcessor;
@@ -324,13 +329,6 @@ void HelpLinker::addBookmark( DB* dbBase, FILE* pFile_DBHelp, std::string thishi
HCDBG(std::cerr << "HelpLinker::addBookmark " << thishid << " " <<
fileB << " " << anchorB << " " << jarfileB << " " << titleB << std::endl);
- std::string temp = thishid;
- std::transform (temp.begin(), temp.end(), temp.begin(), toupper);
- std::replace(temp.begin(), temp.end(), ':', '_');
- const std::string& translatedHid = hidlistTranslation[temp];
- if (!translatedHid.empty())
- thishid = translatedHid;
-
thishid = URLEncoder::encode(thishid);
DBT key;
@@ -396,7 +394,8 @@ void HelpLinker::link() throw( HelpProcessingException )
if( bExtensionMode )
{
- indexDirParentName = sourceRoot;
+ //indexDirParentName = sourceRoot;
+ indexDirParentName = extensionDestination;
}
else
{
@@ -464,20 +463,6 @@ void HelpLinker::link() throw( HelpProcessingException )
try
{
- std::ifstream fileReader(hid.c_str());
- while (fileReader)
- {
- std::string key;
- fileReader >> key;
- std::transform (key.begin(), key.end(), key.begin(), toupper);
- std::replace(key.begin(), key.end(), ':', '_');
- std::string data;
- fileReader >> data;
- if (!key.empty() && !data.empty())
- hidlistTranslation[key] = data;
- }
- fileReader.close();
-
// lastly, initialize the indexBuilder
if ( (!bExtensionMode || bIndexForExtension) && !helpFiles.empty())
initIndexerPreProcessor();
@@ -643,13 +628,6 @@ void HelpLinker::link() throw( HelpProcessingException )
std::string helpTextId = helpTextIter->first;
const std::string& helpTextText = helpTextIter->second;
- std::string temp = helpTextId;
- std::transform (temp.begin(), temp.end(), temp.begin(), toupper);
- std::replace(temp.begin(), temp.end(), ':', '_');
-
- const std::string& tHid = hidlistTranslation[temp];
- if (!tHid.empty())
- helpTextId = tHid;
helpTextId = URLEncoder::encode(helpTextId);
DBT keyDbt;
@@ -752,21 +730,13 @@ void HelpLinker::link() throw( HelpProcessingException )
void HelpLinker::main( std::vector<std::string> &args,
- std::string* pExtensionPath, const rtl::OUString* pOfficeHelpPath )
- throw( HelpProcessingException )
+ std::string* pExtensionPath, std::string* pDestination,
+ const rtl::OUString* pOfficeHelpPath )
+ throw( HelpProcessingException )
{
- rtl::OUString aOfficeHelpPath;
-
bExtensionMode = false;
- if( pExtensionPath && pExtensionPath->length() > 0 && pOfficeHelpPath )
- {
- helpFiles.clear();
- bExtensionMode = true;
- extensionPath = *pExtensionPath;
- sourceRoot = fs::path(extensionPath);
+ helpFiles.clear();
- aOfficeHelpPath = *pOfficeHelpPath;
- }
if (args.size() > 0 && args[0][0] == '@')
{
std::vector<std::string> stringList;
@@ -786,10 +756,34 @@ void HelpLinker::main( std::vector<std::string> &args,
}
size_t i = 0;
-
+ bool bSrcOption = false;
while (i < args.size())
{
- if (args[i].compare("-src") == 0)
+ if (args[i].compare("-extlangsrc") == 0)
+ {
+ ++i;
+ if (i >= args.size())
+ {
+ std::stringstream aStrStream;
+ aStrStream << "extension source missing" << std::endl;
+ throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
+ }
+ extsource = args[i];
+ }
+ else if (args[i].compare("-extlangdest") == 0)
+ {
+ //If this argument is not provided then the location provided in -extsource will
+ //also be the destination
+ ++i;
+ if (i >= args.size())
+ {
+ std::stringstream aStrStream;
+ aStrStream << "extension destination missing" << std::endl;
+ throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
+ }
+ extdestination = args[i];
+ }
+ else if (args[i].compare("-src") == 0)
{
++i;
if (i >= args.size())
@@ -798,9 +792,8 @@ void HelpLinker::main( std::vector<std::string> &args,
aStrStream << "sourceroot missing" << std::endl;
throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
}
-
- if( !bExtensionMode )
- sourceRoot = fs::path(args[i], fs::native);
+ bSrcOption = true;
+ sourceRoot = fs::path(args[i], fs::native);
}
else if (args[i].compare("-sty") == 0)
{
@@ -889,14 +882,7 @@ void HelpLinker::main( std::vector<std::string> &args,
else if (args[i].compare("-hid") == 0)
{
++i;
- if (i >= args.size())
- {
- std::stringstream aStrStream;
- aStrStream << "hid list missing" << std::endl;
- throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
- }
-
- hid = args[i];
+ throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, "obsolete -hid argument used" );
}
else if (args[i].compare("-add") == 0)
{
@@ -926,21 +912,70 @@ void HelpLinker::main( std::vector<std::string> &args,
++i;
}
+ //We can be called from the helplinker executable or the extension manager
+ //In the latter case extsource is not used.
+ if( (pExtensionPath && pExtensionPath->length() > 0 && pOfficeHelpPath)
+ || !extsource.empty())
+ {
+ bExtensionMode = true;
+ if (!extsource.empty())
+ {
+ //called from helplinker.exe, pExtensionPath and pOfficeHelpPath
+ //should be NULL
+ sourceRoot = fs::path(extsource, fs::native);
+ extensionPath = sourceRoot.toUTF8();
+
+ if (extdestination.empty())
+ {
+ std::stringstream aStrStream;
+ aStrStream << "-extlangdest is missing" << std::endl;
+ throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
+ }
+ else
+ {
+ //Convert from system path to file URL!!!
+ fs::path p(extdestination, fs::native);
+ extensionDestination = p.toUTF8();
+ }
+ }
+ else
+ { //called from extension manager
+ extensionPath = *pExtensionPath;
+ sourceRoot = fs::path(extensionPath);
+ extensionDestination = *pDestination;
+ }
+ //check if -src option was used. This option must not be used
+ //when extension help is compiled.
+ if (bSrcOption)
+ {
+ std::stringstream aStrStream;
+ aStrStream << "-src must not be used together with -extsource missing" << std::endl;
+ throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
+ }
+ }
+
if (!bExtensionMode && zipdir.empty())
{
std::stringstream aStrStream;
aStrStream << "no index dir given" << std::endl;
throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
}
- if (!bExtensionMode && idxCaptionStylesheet.empty())
+
+ if (!bExtensionMode && idxCaptionStylesheet.empty()
+ || !extsource.empty() && idxCaptionStylesheet.empty())
{
+ //No extension mode and extension mode using commandline
+ //!extsource.empty indicates extension mode using commandline
+ // -idxcaption paramter is required
std::stringstream aStrStream;
aStrStream << "no index caption stylesheet given" << std::endl;
throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
}
- else if ( bExtensionMode )
+ else if ( bExtensionMode && extsource.empty())
{
- rtl::OUString aIdxCaptionPathFileURL( aOfficeHelpPath );
+ //This part is used when compileExtensionHelp is called from the extensions manager.
+ //If extension help is compiled using helplinker in the build process
+ rtl::OUString aIdxCaptionPathFileURL( *pOfficeHelpPath );
aIdxCaptionPathFileURL += rtl::OUString::createFromAscii( "/idxcaption.xsl" );
rtl::OString aOStr_IdxCaptionPathFileURL( rtl::OUStringToOString
@@ -949,15 +984,23 @@ void HelpLinker::main( std::vector<std::string> &args,
idxCaptionStylesheet = fs::path( aStdStr_IdxCaptionPathFileURL );
}
- if (!bExtensionMode && idxContentStylesheet.empty())
+
+ if (!bExtensionMode && idxContentStylesheet.empty()
+ || !extsource.empty() && idxContentStylesheet.empty())
{
+ //No extension mode and extension mode using commandline
+ //!extsource.empty indicates extension mode using commandline
+ // -idxcontent paramter is required
std::stringstream aStrStream;
aStrStream << "no index content stylesheet given" << std::endl;
throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
}
- else if ( bExtensionMode )
+ else if ( bExtensionMode && extsource.empty())
{
- rtl::OUString aIdxContentPathFileURL( aOfficeHelpPath );
+ //If extension help is compiled using helplinker in the build process
+ //then -idxcontent must be supplied
+ //This part is used when compileExtensionHelp is called from the extensions manager.
+ rtl::OUString aIdxContentPathFileURL( *pOfficeHelpPath );
aIdxContentPathFileURL += rtl::OUString::createFromAscii( "/idxcontent.xsl" );
rtl::OString aOStr_IdxContentPathFileURL( rtl::OUStringToOString
@@ -996,12 +1039,6 @@ void HelpLinker::main( std::vector<std::string> &args,
aStrStream << "language missing" << std::endl;
throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
}
- if (!bExtensionMode && hid.empty())
- {
- std::stringstream aStrStream;
- aStrStream << "hid list missing" << std::endl;
- throw HelpProcessingException( HELPPROCESSING_GENERAL_ERROR, aStrStream.str() );
- }
link();
}
@@ -1069,6 +1106,7 @@ HELPLINKER_DLLPUBLIC bool compileExtensionHelp
const rtl::OUString& aExtensionName,
const rtl::OUString& aExtensionLanguageRoot,
sal_Int32 nXhpFileCount, const rtl::OUString* pXhpFiles,
+ const rtl::OUString& aDestination,
HelpProcessingErrorInfo& o_rHelpProcessingErrorInfo
)
{
@@ -1102,13 +1140,16 @@ HELPLINKER_DLLPUBLIC bool compileExtensionHelp
rtl::OString aOExtensionLanguageRoot = rtl::OUStringToOString( aExtensionLanguageRoot, fs::getThreadTextEncoding() );
const char* pExtensionPath = aOExtensionLanguageRoot.getStr();
std::string aStdStrExtensionPath = pExtensionPath;
+ rtl::OString aODestination = rtl::OUStringToOString(aDestination, fs::getThreadTextEncoding());
+ const char* pDestination = aODestination.getStr();
+ std::string aStdStrDestination = pDestination;
// Set error handler
xmlSetStructuredErrorFunc( NULL, (xmlStructuredErrorFunc)StructuredXMLErrorFunction );
try
{
HelpLinker* pHelpLinker = new HelpLinker();
- pHelpLinker->main( args, &aStdStrExtensionPath, &aOfficeHelpPath );
+ pHelpLinker->main( args, &aStdStrExtensionPath, &aStdStrDestination, &aOfficeHelpPath );
delete pHelpLinker;
}
catch( const HelpProcessingException& e )
diff --git a/l10ntools/source/help/compilehelp.hxx b/l10ntools/source/help/compilehelp.hxx
index 472b15231639..9c59083bf038 100644
--- a/l10ntools/source/help/compilehelp.hxx
+++ b/l10ntools/source/help/compilehelp.hxx
@@ -72,6 +72,7 @@ HELPLINKER_DLLPUBLIC bool compileExtensionHelp
const rtl::OUString& aExtensionName,
const rtl::OUString& aExtensionLanguageRoot,
sal_Int32 nXhpFileCount, const rtl::OUString* pXhpFiles,
+ const rtl::OUString& aDestination,
HelpProcessingErrorInfo& o_rHelpProcessingErrorInfo
);
diff --git a/l10ntools/source/helpex.cxx b/l10ntools/source/helpex.cxx
index e185b77cad54..0055c233a434 100644
--- a/l10ntools/source/helpex.cxx
+++ b/l10ntools/source/helpex.cxx
@@ -61,7 +61,6 @@ ByteString sOutputFile;
ByteString sOutputFileX;
ByteString sOutputFileY;
ByteString sSDFFile;
-bool bQuiet;
/*****************************************************************************/
sal_Bool ParseCommandLine( int argc, char* argv[])
@@ -73,7 +72,6 @@ sal_Bool ParseCommandLine( int argc, char* argv[])
bUTF8 = sal_True;
sPrj = "";
sPrjRoot = "";
- bQuiet = false;
Export::sLanguages = "";
Export::sForcedLanguages = "";
@@ -111,9 +109,6 @@ sal_Bool ParseCommandLine( int argc, char* argv[])
nState = STATE_ERRORLOG;
bErrorLog = sal_False;
}
- else if ( ByteString( argv[ i ] ).ToUpperAscii() == "-QQ" ) {
- bQuiet = true;
- }
else if ( ByteString( argv[ i ]).ToUpperAscii() == "-UTF8" ) {
nState = STATE_UTF8;
bUTF8 = sal_True;
@@ -188,13 +183,12 @@ sal_Bool ParseCommandLine( int argc, char* argv[])
void Help()
/*****************************************************************************/
{
- fprintf( stdout, "Syntax: HELPEX[-p Prj][-r PrjRoot]-i FileIn ( -o FileOut | -x path -y relfile )[-m DataBase][-e][-b][-u][-L l1,l2,...][-QQ] -LF l1,l2 \n" );
+ fprintf( stdout, "Syntax: HELPEX[-p Prj][-r PrjRoot]-i FileIn ( -o FileOut | -x path -y relfile )[-m DataBase][-e][-b][-u][-L l1,l2,...] -LF l1,l2 \n" );
fprintf( stdout, " Prj: Project\n" );
fprintf( stdout, " PrjRoot: Path to project root (..\\.. etc.)\n" );
fprintf( stdout, " FileIn: Source file (*.lng)\n" );
fprintf( stdout, " FileOut: Destination file (*.*)\n" );
fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
- fprintf( stdout, " -QQ: quiet output\n" );
fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (en-US,fr,de...)\n" );
fprintf( stdout, " A fallback language can be defined like this: l1=f1.\n" );
fprintf( stdout, " f1, f2,... are also elements of (en-US,fr,de...)\n" );
diff --git a/l10ntools/source/helpmerge.cxx b/l10ntools/source/helpmerge.cxx
index 8fb40c329e59..58f8af7d3446 100644
--- a/l10ntools/source/helpmerge.cxx
+++ b/l10ntools/source/helpmerge.cxx
@@ -181,17 +181,6 @@ bool HelpParser::CreateSDF(
ByteString sActFileName = makeAbsolutePath( sHelpFile , rRoot_in );
-/* DirEntry aEntry( String( sHelpFile, RTL_TEXTENCODING_ASCII_US ));
- aEntry.ToAbs();
- String sFullEntry = aEntry.GetFull();
- aEntry += DirEntry( String( "..", RTL_TEXTENCODING_ASCII_US ));
- aEntry += DirEntry( rRoot_in );
- ByteString sPrjEntry( aEntry.GetFull(), gsl_getSystemTextEncoding());
- ByteString sActFileName(
- sFullEntry.Copy( sPrjEntry.Len() + 1 ), gsl_getSystemTextEncoding());
-
- sActFileName.SearchAndReplaceAll( "/", "\\" );
-*/
XMLHashMap* aXMLStrHM = file->GetStrings();
LangHashMap* pElem;
XMLElement* pXMLElement = NULL;
diff --git a/l10ntools/source/lngex.cxx b/l10ntools/source/lngex.cxx
index 4b9a3683ff47..119a6009d8b1 100644
--- a/l10ntools/source/lngex.cxx
+++ b/l10ntools/source/lngex.cxx
@@ -53,7 +53,6 @@ sal_Bool bMergeMode;
sal_Bool bErrorLog;
sal_Bool bUTF8;
sal_Bool bULF; // ULF = Unicode Language File
-bool bQuiet;
ByteString sPrj;
ByteString sPrjRoot;
ByteString sOutputFile;
@@ -68,7 +67,6 @@ sal_Bool ParseCommandLine( int argc, char* argv[])
bErrorLog = sal_True;
bUTF8 = sal_True;
bULF = sal_False;
- bQuiet = false;
sPrj = "";
sPrjRoot = "";
Export::sLanguages = "";
@@ -92,9 +90,6 @@ sal_Bool ParseCommandLine( int argc, char* argv[])
else if ( sSwitch == "-R" ) {
nState = STATE_ROOT; // next token specifies path to project root
}
- else if ( sSwitch == "-QQ" ) {
- bQuiet = true;
- }
else if ( sSwitch == "-M" ) {
nState = STATE_MERGESRC; // next token specifies the merge database
}
@@ -170,16 +165,12 @@ sal_Bool ParseCommandLine( int argc, char* argv[])
void Help()
/*****************************************************************************/
{
- //fprintf( stdout, "Syntax:ULFEX[-p Prj][-r PrjRoot]-i FileIn -o FileOut[-m DataBase][-e][-b][-u][-NOUTF8][-ULF][-L l1,l2,...]\n" );
fprintf( stdout, "Syntax:ULFEX[-p Prj][-r PrjRoot]-i FileIn -o FileOut[-m DataBase][-L l1,l2,...]\n" );
fprintf( stdout, " Prj: Project\n" );
fprintf( stdout, " PrjRoot: Path to project root (..\\.. etc.)\n" );
fprintf( stdout, " FileIn: Source file (*.lng)\n" );
fprintf( stdout, " FileOut: Destination file (*.*)\n" );
fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
- fprintf( stdout, " -QQ: quite output\n" );
- //fprintf( stdout, " -NOUTF8: disable UTF8 as language independent encoding\n" );
- //fprintf( stdout, " -ULF: enables Unicode Language File format, leads to UTF8 encoded version of lng files" );
fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US...)\n" );
fprintf( stdout, " A fallback language can be defined like this: l1=f1.\n" );
fprintf( stdout, " f1, f2,... are also elements of (de,en-US...)\n" );
@@ -199,25 +190,16 @@ int _cdecl main( int argc, char *argv[] )
Help();
return 1;
}
- if( !bQuiet ){
- fprintf( stdout, "\nUlfEx 1 Copyright 2000, 2010 Oracle and/or its affiliates. All Rights Reserved.\n" );
- fprintf( stdout, "=================================================================================\n" );
- fprintf( stdout, "\nProcessing File %s ...\n", sInputFile.GetBuffer());
- }else
- {
fprintf(stdout, ".");
fflush( stdout );
- }
if ( sOutputFile.Len()) {
- LngParser aParser( sInputFile, bUTF8, bULF , bQuiet );
+ LngParser aParser( sInputFile, bUTF8, bULF );
if ( bMergeMode )
aParser.Merge( sMergeSrc, sOutputFile , sPrj );
else
aParser.CreateSDF( sOutputFile, sPrj, sPrjRoot );
}
- if( !bQuiet ) fprintf( stdout, "\n=================================================\n\n" );
-
return 0;
}
diff --git a/l10ntools/source/lngmerge.cxx b/l10ntools/source/lngmerge.cxx
index 36d0eace00d0..bf105426bac1 100644
--- a/l10ntools/source/lngmerge.cxx
+++ b/l10ntools/source/lngmerge.cxx
@@ -38,15 +38,14 @@ using namespace std;
// class LngParser
//
/*****************************************************************************/
-LngParser::LngParser( const ByteString &rLngFile, sal_Bool bUTF8, sal_Bool bULFFormat , bool bQuiet_in )
+LngParser::LngParser( const ByteString &rLngFile, sal_Bool bUTF8, sal_Bool bULFFormat )
/*****************************************************************************/
:
nError( LNG_OK ),
pLines( NULL ),
sSource( rLngFile ),
bDBIsUTF8( bUTF8 ),
- bULF( bULFFormat ),
- bQuiet( bQuiet_in )
+ bULF( bULFFormat )
{
pLines = new LngLineList( 100, 100 );
DirEntry aEntry( String( sSource, RTL_TEXTENCODING_ASCII_US ));
diff --git a/l10ntools/source/localize.cxx b/l10ntools/source/localize.cxx
index 82c888889460..0f87f44bfd39 100644
--- a/l10ntools/source/localize.cxx
+++ b/l10ntools/source/localize.cxx
@@ -53,10 +53,8 @@ namespace transex3
const char *ExeTable[][5] = {
{ "src", "transex3", " -UTF8 -e", "negative", "noiso" },
{ "hrc", "transex3", " -UTF8 -e", "positive", "noiso" },
- //{ "src", "transex3", "-UTF8 -e", "negative", "noiso" },
- //{ "hrc", "transex3", "-UTF8 -e", "positive", "noiso" },
-
- //{ "lng", "lngex", "-UTF8 -e", "negative", "noiso" },
+ { "tree", "xhtex", "", "negative", "noiso" },
+ { "xtx", "xtxex", "", "negative", "noiso" },
{ "ulf", "ulfex", " -e", "negative", "noiso" },
{ "xrb", "xmlex", "-UTF8 -e", "negative", "iso" },
{ "xxl", "xmlex", "-UTF8 -e", "negative", "iso" },
@@ -66,7 +64,7 @@ const char *ExeTable[][5] = {
{ "xcs", "cfgex", "-UTF8 -e -f", "negative", "iso" },
{ "xrm", "xrmex", "-UTF8 -e", "negative", "iso" },
{ "xhp", "helpex", " -e", "negative", "noiso" },
- //{ "properties", "jpropex", " -e", "negative", "noiso" },
+ { "properties", "jpropex", " -e", "negative", "noiso" },
{ "NULL", "NULL", "NULL", "NULL", "NULL" }
};
@@ -136,7 +134,6 @@ private:
ByteString sLanguageRestriction;
ByteString sOutputFile;
- bool bQuiet2;
int nFileCnt;
@@ -169,7 +166,7 @@ private:
);
public:
- SourceTreeLocalizer( const ByteString &rRoot, const ByteString &rVersion , bool bLocal , bool bQuiet2_in , bool skip_links );
+ SourceTreeLocalizer( const ByteString &rRoot, const ByteString &rVersion , bool bLocal , bool skip_links );
~SourceTreeLocalizer();
ByteString getSourceLanguages( ByteString sLanguageRestriction , ByteString sCommand );
@@ -185,11 +182,10 @@ public:
/*****************************************************************************/
SourceTreeLocalizer::SourceTreeLocalizer(
- const ByteString &rRoot, const ByteString &rVersion, bool bLocal_in , bool bQuiet2_in , bool skip_links )
+ const ByteString &rRoot, const ByteString &rVersion, bool bLocal_in , bool skip_links )
/*****************************************************************************/
: SourceTreeIterator( rRoot, rVersion , bLocal_in ),
nMode( LOCALIZE_NONE ),
- bQuiet2( bQuiet2_in ),
nFileCnt( 0 )
{
bSkipLinks = skip_links ;
@@ -325,9 +321,6 @@ void SourceTreeLocalizer::WorkOnFile(
sCommand += getSourceLanguages( sLanguageRestriction , sCommand );
}
- if( bQuiet2 ){
- sCommand +=" -QQ ";
- }
//printf("DBG: %s\n",sCommand.GetBuffer());
if (system(sCommand.GetBuffer()) == -1)
fprintf(stderr, "%s failed\n", sCommand.GetBuffer());
@@ -487,7 +480,6 @@ void SourceTreeLocalizer::OnExecuteDirectory( const rtl::OUString &aDirectory )
{
ByteString rDirectory( rtl::OUStringToOString( aDirectory , RTL_TEXTENCODING_UTF8 , aDirectory.getLength() ) ) ;
if ( nMode == LOCALIZE_NONE ){
- if( !bQuiet2 ) fprintf( stdout, "%s\n", rDirectory.GetBuffer());
}
else
WorkOnDirectory( rDirectory );
@@ -543,7 +535,6 @@ sal_Bool SourceTreeLocalizer::MergeSingleFile(
ByteString sFile( aEntry.GetFull(), RTL_TEXTENCODING_ASCII_US );
ByteString sBCur( aEntry.GetFull(), RTL_TEXTENCODING_ASCII_US );
- if( !bQuiet2 ) fprintf( stdout, "##### %s #####\n", sBCur.GetBuffer());
sal_uIntPtr nIndex = 0;
ByteString sExtension( aEntry.GetExtension(), RTL_TEXTENCODING_ASCII_US );
@@ -591,9 +582,6 @@ sal_Bool SourceTreeLocalizer::MergeSingleFile(
sCommand += " -l ";
sCommand += sLanguageRestriction;
}
- if( bQuiet2 ){
- sCommand +=" -QQ ";
- }
DirEntry aPath( aEntry.GetPath());
DirEntry aOldCWD;
@@ -603,7 +591,6 @@ sal_Bool SourceTreeLocalizer::MergeSingleFile(
fprintf(stderr, "%s failed\n", sCommand.GetBuffer());
nFileCnt++;
printf(".");
- //if( bQuiet2 ){ printf("."); }
SvFileStream aInStream( aOut.GetFull(), STREAM_READ );
if ( !aInStream.IsOpen()) {
fprintf( stderr,
@@ -794,12 +781,11 @@ void Help()
fprintf( stdout,
"As part of the L10N framework, localize extracts and merges translations\n"
"out of and into the whole source tree.\n\n"
- "Syntax: localize -e -l en-US -f FileName [-QQ]\n"
+ "Syntax: localize -e -l en-US -f FileName \n"
"Parameter:\n"
"\t-e: Extract mode\n"
"\tFileName: Output file when extract mode, input file when merge mode\n"
"\tl1...ln: supported languages (\"all\" for all languages).\n"
- "\tQQ: quiet output)"
);
fprintf( stdout,
@@ -842,15 +828,12 @@ int _cdecl main( int argc, char *argv[] )
sal_Bool bExport = sal_False;
sal_Bool bMerge = sal_False;
- bool bQuiet = false;
- bool bQuiet2 = false;
bool bSkipLinks = false;
ByteString sLanguages;
ByteString sFileName;
ByteString sOutput;
- bQuiet2 = true;
bExport = sal_True;
for( int i = 1; i < argc; i++ ) {
@@ -863,17 +846,12 @@ int _cdecl main( int argc, char *argv[] )
return Error();
bExport = sal_True;
}
- else if( sSwitch.Equals( "-Q" )) {
- bQuiet = true;
- }
else if ( sSwitch.Equals( "-I" ) )
nState = STATE_ISOCODE;
else if ( sSwitch.Equals( "-L" ) )
nState = STATE_LANGUAGES;
else if ( sSwitch.Equals( "-F" ) )
nState = STATE_FILENAME;
- else if ( sSwitch.Equals( "-QQ" ))
- bQuiet2 = true;
else if ( ByteString( argv[ i ]).ToUpperAscii().Equals( "-O" ) )
nState = STATE_OUTPUT;
else {
@@ -956,10 +934,10 @@ int _cdecl main( int argc, char *argv[] )
else
curRepository = string( Export::GetEnv("SOURCE_ROOT_DIR") ) + "/" + *iter;
cout << "Localizing repository " << curRepository << "\n";
- SourceTreeLocalizer aIter( ByteString( curRepository.c_str() ) , sVersion , (sOutput.Len() > 0) , bQuiet2 , bSkipLinks );
+ SourceTreeLocalizer aIter( ByteString( curRepository.c_str() ) , sVersion , (sOutput.Len() > 0) , bSkipLinks );
aIter.SetLanguageRestriction( sLanguages );
if ( bExport ){
- if( bQuiet2 ){ /*printf("");*/fflush( stdout );}
+ fflush( stdout );
if( *iter == "ooo" )
aIter.Extract( sFileName );
else
@@ -969,7 +947,7 @@ int _cdecl main( int argc, char *argv[] )
sFileNameWithExt += ByteString( (*iter).c_str() );
aIter.Extract( sFileNameWithExt );
}
- if( bQuiet2 ){ printf("\n%d files found!\n",aIter.GetFileCnt());}
+ printf("\n%d files found!\n",aIter.GetFileCnt());
}
}
if( hasPwd )
@@ -977,12 +955,12 @@ int _cdecl main( int argc, char *argv[] )
string pwd;
Export::getCurrentDir( pwd );
cout << "Localizing repository " << pwd << "\n";
- SourceTreeLocalizer aIter( ByteString( pwd.c_str() ) , sVersion , (sOutput.Len() > 0) , bQuiet2 , bSkipLinks );
+ SourceTreeLocalizer aIter( ByteString( pwd.c_str() ) , sVersion , (sOutput.Len() > 0) , bSkipLinks );
aIter.SetLanguageRestriction( sLanguages );
if ( bExport ){
- if( bQuiet2 ){ /*printf("");*/fflush( stdout );}
+ fflush( stdout );
aIter.Extract( sFileName );
- if( bQuiet2 ){ printf("\n%d files found!\n",aIter.GetFileCnt());}
+ printf("\n%d files found!\n",aIter.GetFileCnt());
}
}
diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx
index e9ff3233c274..2a92dbdc7ab1 100644
--- a/l10ntools/source/merge.cxx
+++ b/l10ntools/source/merge.cxx
@@ -351,7 +351,7 @@ MergeData *MergeDataFile::GetMergeData( ResData *pResData , bool bCaseSensitive
sLID = pResData->sId;
pResData->sGId = sGID;
pResData->sId = sLID;
-
+ //printf("MergeData:: Search gid=%s lid=%s filename=%s \n", pResData->sGId.GetBuffer(),pResData->sId.GetBuffer(),pResData->sFilename.GetBuffer() );
ByteString sKey = CreateKey( pResData->sResTyp , pResData->sGId , pResData->sId , pResData->sFilename , bCaseSensitive );
//printf("DBG: Searching [%s]\n",sKey.GetBuffer());
@@ -361,6 +361,7 @@ MergeData *MergeDataFile::GetMergeData( ResData *pResData , bool bCaseSensitive
//printf("DBG: Found[%s]\n",sKey.GetBuffer());
return aMap[ sKey ];
}
+ //Dump();
pResData->sGId = sOldG;
pResData->sId = sOldL;
//printf("DBG: Found[%s]\n",sKey.GetBuffer());
diff --git a/l10ntools/source/srclex.l b/l10ntools/source/srclex.l
index 473da8b5d511..eb2b6af78b34 100644
--- a/l10ntools/source/srclex.l
+++ b/l10ntools/source/srclex.l
@@ -259,10 +259,6 @@ main( int argc, char* argv[])
FILE *pFile;
pOutput = GetOutputFile( argc, argv );
- if( !isQuiet() ){
- fprintf( stdout, "\nTransEx 3.1 Copyright 2000, 2010 Oracle and/or its affiliates. All Rights Reserved.\n" );
- fprintf( stdout, "=====================================================================================\n" );
- }
if ( !pOutput ) {
fprintf( stdout, "Syntax:TRANSEX[-p Prj][-r PrjRoot]-i FileIn...[-o FileOut][-m DataBase][-e][-b][-u][-L l1,l2,...]\n" );
@@ -301,8 +297,6 @@ main( int argc, char* argv[])
nRetValue = GetError();
EndExport();
- if( !isQuiet() ) fprintf( stdout, "\n===================================\n\n" );
-
/* return error level */
return nRetValue;
}
diff --git a/l10ntools/source/xrmlex.l b/l10ntools/source/xrmlex.l
index c28aede4c6c1..6229525d7e84 100644
--- a/l10ntools/source/xrmlex.l
+++ b/l10ntools/source/xrmlex.l
@@ -55,54 +55,55 @@ int bText=0;
%%
-"<Readme"[^\>]*\> {
- WorkOnTokenSet( XRM_README_START, yytext );
+"<p "[^\>]*xml:lang[^\>]*\> {
+ WorkOnTokenSet( XRM_TEXT_START , yytext );
}
-"</Readme>" {
- WorkOnTokenSet( XRM_README_END, yytext );
+"</p>" {
+ WorkOnTokenSet( XRM_TEXT_END, yytext );
}
-"<apochelp"[^\>]*\> {
- WorkOnTokenSet( XRM_README_START, yytext );
+"<h1 "[^\>]*xml:lang[^\>]*\> {
+ WorkOnTokenSet( XRM_TEXT_START , yytext );
}
-"</apochelp>" {
- WorkOnTokenSet( XRM_README_END, yytext );
+"</h1>" {
+ WorkOnTokenSet( XRM_TEXT_END, yytext );
}
-
-"<Section"[^\>]*\> {
- WorkOnTokenSet( XRM_SECTION_START, yytext );
+"<h2 "[^\>]*xml:lang[^\>]*\> {
+ WorkOnTokenSet( XRM_TEXT_START , yytext );
}
-"</Section>" {
- WorkOnTokenSet( XRM_SECTION_END, yytext );
+"</h2>" {
+ WorkOnTokenSet( XRM_TEXT_END, yytext );
}
-
-"<Paragraph"[^\>]*\> {
- WorkOnTokenSet( XRM_PARAGRAPH_START, yytext );
+"<h3 "[^\>]*xml:lang[^\>]*\> {
+ WorkOnTokenSet( XRM_TEXT_START , yytext );
}
-"</Paragraph>" {
- WorkOnTokenSet( XRM_PARAGRAPH_END, yytext );
+"</h3>" {
+ WorkOnTokenSet( XRM_TEXT_END, yytext );
}
-
-"<Text"[^\>]*\> {
- WorkOnTokenSet( XRM_TEXT_START, yytext );
+"<h4 "[^\>]*xml:lang[^\>]*\> {
+ WorkOnTokenSet( XRM_TEXT_START , yytext );
}
-"</Text>" {
+"</h4>" {
WorkOnTokenSet( XRM_TEXT_END, yytext );
}
-
-"<List"[^\>]*\> {
- WorkOnTokenSet( XRM_LIST_START, yytext );
+"<h5 "[^\>]*xml:lang[^\>]*\> {
+ WorkOnTokenSet( XRM_TEXT_START , yytext );
}
-"</List>" {
- WorkOnTokenSet( XRM_LIST_END, yytext );
+"</h5>" {
+ WorkOnTokenSet( XRM_TEXT_END, yytext );
}
+
+
+
+
+
"<!--" {
char c1 = 0, c2 = 0, c3 = input();
char pChar[2];
@@ -179,10 +180,6 @@ main( int argc, char* argv[])
FILE *pFile;
pOutput = GetOutputFile( argc, argv );
- if( !isQuiet() ){
- fprintf( stdout, "\nXrmEx 0.9 Copyright 2000, 2010 Oracle and/or its affiliates. All Rights Reserved.\n" );
- fprintf( stdout, "===================================================================================\n" );
- }
if ( !pOutput ) {
fprintf( stdout, "Syntax: XRMEX[-p Prj][-r PrjRoot]-i FileIn [-o FileOut][-m DataBase][-e][-b][-u][-NOUTF8][-L l1,l2,...]\n" );
@@ -221,7 +218,6 @@ main( int argc, char* argv[])
nRetValue = GetError();
EndXrmExport();
- if( !isQuiet() ) fprintf( stdout, "\n===================================\n\n" );
removeTempFile();
/* return error level */
return nRetValue;
diff --git a/l10ntools/source/xrmmerge.cxx b/l10ntools/source/xrmmerge.cxx
index 24d4fbe5985a..c5754a05f6a4 100644
--- a/l10ntools/source/xrmmerge.cxx
+++ b/l10ntools/source/xrmmerge.cxx
@@ -61,7 +61,6 @@ sal_Bool bEnableExport;
sal_Bool bMergeMode;
sal_Bool bErrorLog;
sal_Bool bUTF8;
-bool bQuiet;
ByteString sPrj;
ByteString sPrjRoot;
ByteString sInputFileName;
@@ -87,7 +86,6 @@ extern char *GetOutputFile( int argc, char* argv[])
sInputFileName = "";
sActFileName = "";
Export::sLanguages = "";
- bQuiet = false;
sal_uInt16 nState = STATE_NON;
sal_Bool bInput = sal_False;
@@ -108,9 +106,6 @@ extern char *GetOutputFile( int argc, char* argv[])
else if ( ByteString( argv[ i ] ).ToUpperAscii() == "-M" ) {
nState = STATE_MERGESRC; // next token specifies the merge database
}
- else if ( ByteString( argv[ i ] ).ToUpperAscii() == "-QQ" ) {
- bQuiet = true;
- }
else if ( ByteString( argv[ i ] ).ToUpperAscii() == "-E" ) {
nState = STATE_ERRORLOG;
bErrorLog = sal_False;
@@ -199,10 +194,6 @@ int InitXrmExport( char *pOutput , char* pFilename)
return 1;
}
-int isQuiet(){
- if( bQuiet ) return 1;
- else return 0;
-}
/*****************************************************************************/
int EndXrmExport()
/*****************************************************************************/
@@ -252,8 +243,6 @@ extern FILE *GetXrmFile()
// (e.g.: source\ui\src\menue.src)
sActFileName = sFullEntry.Copy( sPrjEntry.Len() + 1 );
- if( !bQuiet )
- fprintf( stdout, "\nProcessing File %s ...\n", sInputFileName.GetBuffer());
sActFileName.SearchAndReplaceAll( "/", "\\" );
@@ -268,7 +257,7 @@ extern FILE *GetXrmFile()
int WorkOnTokenSet( int nTyp, char *pTokenText )
/*****************************************************************************/
{
-// printf("Typ = %d , text = '%s'\n",nTyp , pTokenText );
+ //printf("Typ = %d , text = '%s'\n",nTyp , pTokenText );
pParser->Execute( nTyp, pTokenText );
return 1;
@@ -346,10 +335,10 @@ int XRMResParser::Execute( int nToken, char * pToken )
sLID = "";
sGID += ".";
sGID += GetAttribute( rToken, "id" );
- if ( GetAttribute( rToken, "localized" ) == "false" )
+// if ( GetAttribute( rToken, "localized" ) == "false" )
// sLocalized += "0";
- sLocalized = false;
- else
+// sLocalized = false;
+// else
// sLocalized += "1";
sLocalized = true;
break;
@@ -368,47 +357,32 @@ int XRMResParser::Execute( int nToken, char * pToken )
}
break;
- case XRM_TEXT_START:
-// if ( sLocalized.GetChar( sLocalized.Len() - 1 ) == '1' ) {
- if ( sLocalized ) {
-
+ case XRM_TEXT_START:{
+ //printf("->XRM_TEXT_START\n");
ByteString sNewLID = GetAttribute( rToken, "id" );
if ( sNewLID != sLID ) {
- EndOfText( sCurrentOpenTag, sCurrentCloseTag );
+ //EndOfText( sCurrentOpenTag, sCurrentCloseTag );
sLID = sNewLID;
}
bText = sal_True;
sCurrentText = "";
sCurrentOpenTag = rToken;
Output( rToken );
+ //printf("<-XRM_TEXT_START\n");
}
break;
case XRM_TEXT_END: {
-// if ( sLocalized.GetChar( sLocalized.Len() - 1 ) == '1' ) {
- if( sLocalized ){
sCurrentCloseTag = rToken;
-
+ //printf("->XRM_TEXT_END\n");
ByteString sLang = GetAttribute( sCurrentOpenTag, "xml:lang" );
- if( sLang.EqualsIgnoreCaseAscii("de") ){
- sal_uIntPtr nLen = 0;
- while ( sCurrentText.Len() != nLen )
- {
- nLen = sCurrentText.Len();
- sCurrentText.SearchAndReplaceAll( "\n\t", "\n" );
- sCurrentText.SearchAndReplaceAll( "\n ", "\n" );
- }
- sCurrentText.SearchAndReplaceAll( "\n", " " );
- sCurrentCloseTag = rToken;
- }
WorkOnText( sCurrentOpenTag, sCurrentText );
Output( sCurrentText );
-
- //fprintf( stdout, "%s %s\n", sGID.GetBuffer(), sLID.GetBuffer());
- //fprintf( stdout, "%s\n\n", sCurrentText.GetBuffer());
-
+ EndOfText( sCurrentOpenTag, sCurrentCloseTag );// <---
bText = sal_False;
- }
+ rToken = ByteString("");
+ sCurrentText = ByteString("");
+ //printf("<-XRM_TEXT_END");
}
break;
@@ -429,8 +403,9 @@ int XRMResParser::Execute( int nToken, char * pToken )
}
if ( !bText )
+ {
Output( rToken );
-
+ }
return 0;
}
@@ -598,15 +573,19 @@ void XRMResExport::EndOfText(
sCur = aLanguages[ n ];
ByteString sAct = pResData->sText[ sCur ];
- Export::UnquotHTML( sAct );
+ //Export::UnquotHTML( sAct );
sAct.EraseAllChars( 0x0A );
ByteString sOutput( sPrj ); sOutput += "\t";
sOutput += sPath;
sOutput += "\t0\t";
sOutput += "readmeitem\t";
- sOutput += pResData->sGId; sOutput += "\t";
- sOutput += pResData->sId; sOutput += "\t\t\t0\t";
+ sOutput += pResData->sId;
+ // USE LID AS GID OR MERGE DON'T WORK
+ //sOutput += pResData->sGId;
+ sOutput += "\t";
+ sOutput += pResData->sId;
+ sOutput += "\t\t\t0\t";
sOutput += sCur;
sOutput += "\t";
@@ -615,7 +594,8 @@ void XRMResExport::EndOfText(
sOutput.SearchAndReplaceAll( sSearch, "_" );
//if( !sCur.EqualsIgnoreCaseAscii("de") ||( sCur.EqualsIgnoreCaseAscii("de") && !Export::isMergingGermanAllowed( sPrj ) ) )
- pOutputStream->WriteLine( sOutput );
+ if( sAct.Len() > 1 )
+ pOutputStream->WriteLine( sOutput );
}
}
delete pResData;
@@ -666,12 +646,14 @@ void XRMResMerge::WorkOnText(
if ( pMergeDataFile ) {
if ( !pResData ) {
ByteString sPlatform( "" );
- pResData = new ResData( sPlatform, GetGID() , sFilename );
+// pResData = new ResData( sPlatform, GetGID() , sFilename );
+ pResData = new ResData( sPlatform, GetLID() , sFilename );
pResData->sId = GetLID();
+
pResData->sResTyp = "readmeitem";
}
- PFormEntrys *pEntrys = pMergeDataFile->GetPFormEntrys( pResData );
+ PFormEntrys *pEntrys = pMergeDataFile->GetPFormEntrys( pResData );
if ( pEntrys ) {
ByteString sContent;
if ( Export::isAllowed( sLang ) &&
@@ -682,7 +664,7 @@ void XRMResMerge::WorkOnText(
{
rText = sContent;
ConvertStringToXMLFormat( rText );
- Export::QuotHTMLXRM( rText );
+ //Export::QuotHTMLXRM( rText );
}
}
}
@@ -692,7 +674,8 @@ void XRMResMerge::WorkOnText(
void XRMResMerge::Output( const ByteString& rOutput )
/*****************************************************************************/
{
- if ( pOutputStream )
+ //printf("W: %s\n",rOutput.GetBuffer());
+ if ( pOutputStream && rOutput.Len() > 0 )
pOutputStream->Write( rOutput.GetBuffer(), rOutput.Len());
}
@@ -703,6 +686,8 @@ void XRMResMerge::EndOfText(
)
/*****************************************************************************/
{
+
+ Output( rCloseTag );
if ( pMergeDataFile && pResData ) {
PFormEntrys *pEntrys = pMergeDataFile->GetPFormEntrys( pResData );
if ( pEntrys ) {
@@ -710,18 +695,13 @@ void XRMResMerge::EndOfText(
for( unsigned int n = 0; n < aLanguages.size(); n++ ){
sCur = aLanguages[ n ];
ByteString sContent;
-//<<<<<<< xrmmerge.cxx
if ( !sCur.EqualsIgnoreCaseAscii("en-US") &&
- // ( !sCur.EqualsIgnoreCaseAscii("de") ||( sCur.EqualsIgnoreCaseAscii("de") && Export::isMergingGermanAllowed( sPrj ) )) &&
-//=======
-// if ( Export::isAllowed( sCur ) &&
-//>>>>>>> 1.17
( pEntrys->GetText(
sContent, STRING_TYP_TEXT, sCur, sal_True )) &&
( sContent != "-" ) && ( sContent.Len()))
{
ByteString sText( sContent );
- Export::QuotHTMLXRM( sText );
+ //Export::QuotHTMLXRM( sText );
ByteString sAdditionalLine( "\t" );
sAdditionalLine += rOpenTag;