Kaydet (Commit) a91a7567 authored tarafından Andras Timar's avatar Andras Timar

extract strings for l10n from description.xml files

Merging is to be implemented...
üst ca2235e8
...@@ -98,6 +98,18 @@ ...@@ -98,6 +98,18 @@
#define XRM_TEXT_END 508 #define XRM_TEXT_END 508
#define XML_TEXTCHAR 600 #define XML_TEXTCHAR 600
/*------------------------------------------------------ */
/*------------------------------------------------------ */
/* Tokens for parsing description.xml files */
/*------------------------------------------------------ */
/*------------------------------------------------------ */
#define DESC_DISPLAY_NAME_START 700
#define DESC_DISPLAY_NAME_END 701
#define DESC_TEXT_START 702
#define DESC_TEXT_END 703
#define DESC_EXTENSION_DESCRIPTION_START 704
#define DESC_EXTENSION_DESCRIPTION_END 705
#define DESC_EXTENSION_DESCRIPTION_SRC 706
#endif #endif
......
...@@ -99,8 +99,33 @@ int bText=0; ...@@ -99,8 +99,33 @@ int bText=0;
WorkOnTokenSet( XRM_TEXT_END, yytext ); WorkOnTokenSet( XRM_TEXT_END, yytext );
} }
"<display-name>" {
WorkOnTokenSet( DESC_DISPLAY_NAME_START , yytext );
}
"</display-name>" {
WorkOnTokenSet( DESC_DISPLAY_NAME_END, yytext );
}
"<name "[^\>]*lang[^\>]*\> {
WorkOnTokenSet( DESC_TEXT_START , yytext );
}
"</name>" {
WorkOnTokenSet( DESC_TEXT_END, yytext );
}
"<extension-description>" {
WorkOnTokenSet( DESC_EXTENSION_DESCRIPTION_START , yytext );
}
"</extension-description>" {
WorkOnTokenSet( DESC_EXTENSION_DESCRIPTION_END , yytext );
}
"<src "[^\>]*lang[^\>]*\> {
WorkOnTokenSet( DESC_EXTENSION_DESCRIPTION_SRC , yytext );
}
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include "xrmmerge.hxx" #include "xrmmerge.hxx"
#include "tokens.h" #include "tokens.h"
#include <iostream> #include <iostream>
#include <fstream>
#include <vector> #include <vector>
using namespace std; using namespace std;
...@@ -59,12 +60,16 @@ sal_Bool bEnableExport; ...@@ -59,12 +60,16 @@ sal_Bool bEnableExport;
sal_Bool bMergeMode; sal_Bool bMergeMode;
sal_Bool bErrorLog; sal_Bool bErrorLog;
sal_Bool bUTF8; sal_Bool bUTF8;
sal_Bool bDisplayName;
sal_Bool bExtensionDescription;
ByteString sPrj; ByteString sPrj;
ByteString sPrjRoot; ByteString sPrjRoot;
ByteString sInputFileName; ByteString sInputFileName;
ByteString sActFileName; ByteString sActFileName;
ByteString sOutputFile; ByteString sOutputFile;
ByteString sMergeSrc; ByteString sMergeSrc;
ByteString sLangAttribute;
ByteString sResourceType;
String sUsedTempFile; String sUsedTempFile;
XRMResParser *pParser = NULL; XRMResParser *pParser = NULL;
...@@ -79,6 +84,8 @@ extern char *GetOutputFile( int argc, char* argv[]) ...@@ -79,6 +84,8 @@ extern char *GetOutputFile( int argc, char* argv[])
bMergeMode = sal_False; bMergeMode = sal_False;
bErrorLog = sal_True; bErrorLog = sal_True;
bUTF8 = sal_True; bUTF8 = sal_True;
bDisplayName = sal_False;
bExtensionDescription = sal_False;
sPrj = ""; sPrj = "";
sPrjRoot = ""; sPrjRoot = "";
sInputFileName = ""; sInputFileName = "";
...@@ -296,34 +303,115 @@ int XRMResParser::Execute( int nToken, char * pToken ) ...@@ -296,34 +303,115 @@ int XRMResParser::Execute( int nToken, char * pToken )
switch ( nToken ) { switch ( nToken ) {
case XRM_TEXT_START:{ case XRM_TEXT_START:{
//printf("->XRM_TEXT_START\n");
ByteString sNewLID = GetAttribute( rToken, "id" ); ByteString sNewLID = GetAttribute( rToken, "id" );
if ( sNewLID != sLID ) { if ( sNewLID != sLID ) {
//EndOfText( sCurrentOpenTag, sCurrentCloseTag );
sLID = sNewLID; sLID = sNewLID;
} }
bText = sal_True; bText = sal_True;
sCurrentText = ""; sCurrentText = "";
sCurrentOpenTag = rToken; sCurrentOpenTag = rToken;
Output( rToken ); Output( rToken );
//printf("<-XRM_TEXT_START\n");
} }
break; break;
case XRM_TEXT_END: { case XRM_TEXT_END: {
sCurrentCloseTag = rToken; sCurrentCloseTag = rToken;
//printf("->XRM_TEXT_END\n"); sResourceType = ByteString ( "readmeitem" );
ByteString sLang = GetAttribute( sCurrentOpenTag, "xml:lang" ); sLangAttribute = ByteString ( "xml:lang" );
ByteString sLang = GetAttribute( sCurrentOpenTag, sLangAttribute );
WorkOnText( sCurrentOpenTag, sCurrentText ); WorkOnText( sCurrentOpenTag, sCurrentText );
Output( sCurrentText ); Output( sCurrentText );
EndOfText( sCurrentOpenTag, sCurrentCloseTag ); EndOfText( sCurrentOpenTag, sCurrentCloseTag );
bText = sal_False; bText = sal_False;
rToken = ByteString(""); rToken = ByteString("");
sCurrentText = ByteString(""); sCurrentText = ByteString("");
//printf("<-XRM_TEXT_END");
} }
break; break;
case DESC_DISPLAY_NAME_START:{
bDisplayName = sal_True;
}
break;
case DESC_DISPLAY_NAME_END:{
bDisplayName = sal_False;
}
break;
case DESC_TEXT_START:{
if (bDisplayName) {
sLID = ByteString("dispname");
bText = sal_True;
sCurrentText = "";
sCurrentOpenTag = rToken;
Output( rToken );
}
}
break;
case DESC_TEXT_END: {
if (bDisplayName) {
sCurrentCloseTag = rToken;
sResourceType = ByteString ( "description" );
sLangAttribute = ByteString ( "lang" );
ByteString sLang = GetAttribute( sCurrentOpenTag, sLangAttribute );
WorkOnText( sCurrentOpenTag, sCurrentText );
Output( sCurrentText );
EndOfText( sCurrentOpenTag, sCurrentCloseTag );
bText = sal_False;
rToken = ByteString("");
sCurrentText = ByteString("");
}
}
break;
case DESC_EXTENSION_DESCRIPTION_START: {
bExtensionDescription = sal_True;
}
break;
case DESC_EXTENSION_DESCRIPTION_END: {
bExtensionDescription = sal_False;
}
break;
case DESC_EXTENSION_DESCRIPTION_SRC: {
if (bExtensionDescription) {
sLID = ByteString("extdesc");
sResourceType = ByteString ( "description" );
sLangAttribute = ByteString ( "lang" );
sCurrentOpenTag = rToken;
sCurrentText = ByteString("");
Output( rToken );
DirEntry aEntry( String( sInputFileName, RTL_TEXTENCODING_ASCII_US ));
aEntry.ToAbs();
ByteString sDescFileName( aEntry.GetFull(), RTL_TEXTENCODING_ASCII_US );
sDescFileName.SearchAndReplaceAll( "description.xml", "" );
sDescFileName += GetAttribute( sCurrentOpenTag, "xlink:href" );
ifstream::pos_type size;
char * memblock;
ifstream file (sDescFileName.GetBuffer(), ios::in|ios::binary|ios::ate);
if (file.is_open()) {
size = file.tellg();
memblock = new char [size];
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();
sCurrentText = ByteString(memblock);
sCurrentText.SearchAndReplaceAll( "\n", "\\n" );
delete[] memblock;
}
ByteString sLang = GetAttribute( sCurrentOpenTag, sLangAttribute );
WorkOnText( sCurrentOpenTag, sCurrentText );
sCurrentCloseTag = rToken;
Output( sCurrentText );
EndOfText( sCurrentOpenTag, sCurrentCloseTag );
rToken = ByteString("");
sCurrentText = ByteString("");
}
}
break;
default: default:
if ( bText ) { if ( bText ) {
sCurrentText += rToken; sCurrentText += rToken;
...@@ -461,7 +549,7 @@ void XRMResExport::WorkOnText( ...@@ -461,7 +549,7 @@ void XRMResExport::WorkOnText(
) )
/*****************************************************************************/ /*****************************************************************************/
{ {
ByteString sLang( GetAttribute( rOpenTag, "xml:lang" )); ByteString sLang( GetAttribute( rOpenTag, sLangAttribute ));
if ( !pResData ) if ( !pResData )
{ {
...@@ -498,7 +586,8 @@ void XRMResExport::EndOfText( ...@@ -498,7 +586,8 @@ void XRMResExport::EndOfText(
ByteString sOutput( sPrj ); sOutput += "\t"; ByteString sOutput( sPrj ); sOutput += "\t";
sOutput += sPath; sOutput += sPath;
sOutput += "\t0\t"; sOutput += "\t0\t";
sOutput += "readmeitem\t"; sOutput += sResourceType;
sOutput += "\t";
sOutput += pResData->sId; sOutput += pResData->sId;
// USE LID AS GID OR MERGE DON'T WORK // USE LID AS GID OR MERGE DON'T WORK
//sOutput += pResData->sGId; //sOutput += pResData->sGId;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment