2000-09-18 16:07:07 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 08:41:46 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 08:41:46 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 08:41:46 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 08:41:46 +00:00
|
|
|
* 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.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 08:41:46 +00:00
|
|
|
* 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).
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 08:41:46 +00:00
|
|
|
* 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.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
2006-09-17 07:18:41 +00:00
|
|
|
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
2010-01-25 17:20:55 +01:00
|
|
|
#include "precompiled_l10ntools.hxx"
|
2000-09-18 16:07:07 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
// local includes
|
|
|
|
#include "lngmerge.hxx"
|
|
|
|
|
|
|
|
// defines to parse command line
|
|
|
|
#define STATE_NON 0x0001
|
|
|
|
#define STATE_INPUT 0x0002
|
|
|
|
#define STATE_OUTPUT 0x0003
|
|
|
|
#define STATE_PRJ 0x0004
|
|
|
|
#define STATE_ROOT 0x0005
|
|
|
|
#define STATE_MERGESRC 0x0006
|
|
|
|
#define STATE_ERRORLOG 0x0007
|
|
|
|
#define STATE_BREAKHELP 0x0008
|
|
|
|
#define STATE_UNMERGE 0x0009
|
2001-04-25 09:17:04 +00:00
|
|
|
#define STATE_UTF8 0x000A
|
2003-04-29 15:48:14 +00:00
|
|
|
#define STATE_ULF 0x000B
|
|
|
|
#define STATE_LANGUAGES 0x000C
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
// set of global variables
|
|
|
|
ByteString sInputFile;
|
|
|
|
BOOL bEnableExport;
|
|
|
|
BOOL bMergeMode;
|
|
|
|
BOOL bErrorLog;
|
2001-04-25 09:17:04 +00:00
|
|
|
BOOL bUTF8;
|
2003-04-29 15:48:14 +00:00
|
|
|
BOOL bULF; // ULF = Unicode Language File
|
2004-07-13 12:52:10 +00:00
|
|
|
bool bQuiet;
|
2000-09-18 16:07:07 +00:00
|
|
|
ByteString sPrj;
|
|
|
|
ByteString sPrjRoot;
|
|
|
|
ByteString sOutputFile;
|
|
|
|
ByteString sMergeSrc;
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
BOOL ParseCommandLine( int argc, char* argv[])
|
|
|
|
/*****************************************************************************/
|
|
|
|
{
|
|
|
|
bEnableExport = FALSE;
|
|
|
|
bMergeMode = FALSE;
|
|
|
|
bErrorLog = TRUE;
|
2001-05-31 08:44:37 +00:00
|
|
|
bUTF8 = TRUE;
|
2003-04-29 15:48:14 +00:00
|
|
|
bULF = FALSE;
|
2004-07-13 12:52:10 +00:00
|
|
|
bQuiet = false;
|
2000-09-18 16:07:07 +00:00
|
|
|
sPrj = "";
|
|
|
|
sPrjRoot = "";
|
2001-05-23 07:05:40 +00:00
|
|
|
Export::sLanguages = "";
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
USHORT nState = STATE_NON;
|
|
|
|
BOOL bInput = FALSE;
|
|
|
|
|
|
|
|
// parse command line
|
|
|
|
for( int i = 1; i < argc; i++ ) {
|
2006-06-19 16:23:13 +00:00
|
|
|
ByteString sSwitch( argv[ i ] );
|
|
|
|
sSwitch.ToUpperAscii();
|
|
|
|
if ( sSwitch == "-I" ) {
|
2000-09-18 16:07:07 +00:00
|
|
|
nState = STATE_INPUT; // next tokens specifies source files
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
else if ( sSwitch == "-O" ) {
|
2000-09-18 16:07:07 +00:00
|
|
|
nState = STATE_OUTPUT; // next token specifies the dest file
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
else if ( sSwitch == "-P" ) {
|
2000-09-18 16:07:07 +00:00
|
|
|
nState = STATE_PRJ; // next token specifies the cur. project
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
else if ( sSwitch == "-R" ) {
|
2000-09-18 16:07:07 +00:00
|
|
|
nState = STATE_ROOT; // next token specifies path to project root
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
else if ( sSwitch == "-QQ" ) {
|
2004-07-13 12:52:10 +00:00
|
|
|
bQuiet = true;
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
else if ( sSwitch == "-M" ) {
|
2000-09-18 16:07:07 +00:00
|
|
|
nState = STATE_MERGESRC; // next token specifies the merge database
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
else if ( sSwitch == "-E" ) {
|
2000-09-18 16:07:07 +00:00
|
|
|
nState = STATE_ERRORLOG;
|
|
|
|
bErrorLog = FALSE;
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
else if ( sSwitch == "-UTF8" ) {
|
2001-04-25 09:17:04 +00:00
|
|
|
nState = STATE_UTF8;
|
|
|
|
bUTF8 = TRUE;
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
/* else if ( sSwitch == "-NOUTF8" ) {
|
2001-05-31 08:44:37 +00:00
|
|
|
nState = STATE_UTF8;
|
|
|
|
bUTF8 = FALSE;
|
2006-06-19 16:23:13 +00:00
|
|
|
}*/
|
|
|
|
/* else if ( sSwitch == "-ULF" ) {
|
2003-04-29 15:48:14 +00:00
|
|
|
nState = STATE_ULF;
|
|
|
|
bULF = TRUE;
|
2004-06-25 11:41:16 +00:00
|
|
|
}*/
|
2006-06-19 16:23:13 +00:00
|
|
|
else if ( sSwitch == "-L" ) {
|
2001-05-23 07:05:40 +00:00
|
|
|
nState = STATE_LANGUAGES;
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
else {
|
|
|
|
switch ( nState ) {
|
|
|
|
case STATE_NON: {
|
|
|
|
return FALSE; // no valid command line
|
|
|
|
}
|
2006-06-19 16:23:13 +00:00
|
|
|
//break;
|
2000-09-18 16:07:07 +00:00
|
|
|
case STATE_INPUT: {
|
|
|
|
sInputFile = argv[ i ];
|
|
|
|
bInput = TRUE; // source file found
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case STATE_OUTPUT: {
|
|
|
|
sOutputFile = argv[ i ]; // the dest. file
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case STATE_PRJ: {
|
|
|
|
sPrj = argv[ i ];
|
2001-06-11 12:49:22 +00:00
|
|
|
// sPrj.ToLowerAscii(); // the project
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case STATE_ROOT: {
|
|
|
|
sPrjRoot = argv[ i ]; // path to project root
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case STATE_MERGESRC: {
|
|
|
|
sMergeSrc = argv[ i ];
|
|
|
|
bMergeMode = TRUE; // activate merge mode, cause merge database found
|
|
|
|
}
|
|
|
|
break;
|
2001-05-23 07:05:40 +00:00
|
|
|
case STATE_LANGUAGES: {
|
|
|
|
Export::sLanguages = argv[ i ];
|
|
|
|
}
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( bInput ) {
|
|
|
|
// command line is valid
|
2004-06-25 11:41:16 +00:00
|
|
|
bULF = TRUE;
|
2000-09-18 16:07:07 +00:00
|
|
|
bEnableExport = TRUE;
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
// command line is not valid
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
void Help()
|
|
|
|
/*****************************************************************************/
|
|
|
|
{
|
2005-01-13 18:17:28 +00:00
|
|
|
fprintf( stdout, "Syntax:ULFEX[-p Prj][-r PrjRoot]-i FileIn -o FileOut[-m DataBase][-L l1,l2,...]\n" );
|
2000-09-18 16:07:07 +00:00
|
|
|
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" );
|
2005-01-13 18:17:28 +00:00
|
|
|
fprintf( stdout, " -QQ: quite output\n" );
|
2004-06-25 11:41:16 +00:00
|
|
|
//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" );
|
2005-01-13 18:17:28 +00:00
|
|
|
fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US...)\n" );
|
2001-05-28 07:25:29 +00:00
|
|
|
fprintf( stdout, " A fallback language can be defined like this: l1=f1.\n" );
|
2005-01-13 18:17:28 +00:00
|
|
|
fprintf( stdout, " f1, f2,... are also elements of (de,en-US...)\n" );
|
|
|
|
fprintf( stdout, " Example: -L de,es=en-US\n" );
|
|
|
|
fprintf( stdout, " Restriction to de and es, en-US will be fallback for es\n" );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
2008-12-09 08:43:20 +00:00
|
|
|
#if defined(UNX) || defined(OS2)
|
2000-09-18 16:07:07 +00:00
|
|
|
int main( int argc, char *argv[] )
|
|
|
|
#else
|
|
|
|
int _cdecl main( int argc, char *argv[] )
|
|
|
|
#endif
|
|
|
|
/*****************************************************************************/
|
|
|
|
{
|
|
|
|
if ( !ParseCommandLine( argc, argv )) {
|
|
|
|
Help();
|
|
|
|
return 1;
|
|
|
|
}
|
2004-07-13 12:52:10 +00:00
|
|
|
fprintf(stdout, ".");
|
|
|
|
fflush( stdout );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
if ( sOutputFile.Len()) {
|
2004-07-13 12:52:10 +00:00
|
|
|
LngParser aParser( sInputFile, bUTF8, bULF , bQuiet );
|
2000-09-18 16:07:07 +00:00
|
|
|
if ( bMergeMode )
|
2005-06-06 15:25:02 +00:00
|
|
|
aParser.Merge( sMergeSrc, sOutputFile , sPrj );
|
2000-09-18 16:07:07 +00:00
|
|
|
else
|
|
|
|
aParser.CreateSDF( sOutputFile, sPrj, sPrjRoot );
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|