/***************************************
- $Header: /home/amb/routino/src/RCS/translations.c,v 1.10 2010/07/03 10:58:37 amb Exp $
+ $Header: /home/amb/routino/src/RCS/translations.c,v 1.13 2010/09/15 18:30:08 amb Exp $
Load the translations from a file and the functions for handling them.
#include <string.h>
#include <stdlib.h>
-#include "functions.h"
+#include "files.h"
#include "translations.h"
#include "xmlparse.h"
-/* Global variables - default English values */
+/* Global variables - default English values - Must not require any UTF-8 encoding */
char *translate_copyright_creator[2]={"Creator","Routino - http://www.routino.org/"};
char *translate_copyright_source[2] ={NULL,NULL};
char *translate_heading[9]={"South","South-West","West","North-West","North","North-East","East","South-East","South"};
char *translate_turn[9] ={"Very sharp left","Sharp left","Left","Slight left","Straight on","Slight right","Right","Sharp right","Very sharp right"};
-char *translate_highway[Way_Count]={"","motorway","trunk road","primary road","secondary road","tertiary road","unclassified road","residential road","service road","track","cycleway","path","steps"};
+char *translate_highway[Way_Count]={"","motorway","trunk road","primary road","secondary road","tertiary road","unclassified road","residential road","service road","track","cycleway","path","steps","ferry"};
char *translate_route_shortest="Shortest";
char *translate_route_quickest="Quickest";
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring,*xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,string);
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_copyright_creator[0]=strcpy(malloc(strlen(string)+1),string);
- translate_copyright_creator[1]=strcpy(malloc(strlen(text)+1),text);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+ xmltext =ParseXML_Encode_Safe_XML(text);
+
+ translate_copyright_creator[0]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
+ translate_copyright_creator[1]=strcpy(malloc(strlen(xmltext)+1) ,xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring,*xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,string);
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_copyright_source[0]=strcpy(malloc(strlen(string)+1),string);
- translate_copyright_source[1]=strcpy(malloc(strlen(text)+1),text);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+ xmltext =ParseXML_Encode_Safe_XML(text);
+
+ translate_copyright_source[0]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
+ translate_copyright_source[1]=strcpy(malloc(strlen(xmltext)+1) ,xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring,*xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,string);
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_copyright_license[0]=strcpy(malloc(strlen(string)+1),string);
- translate_copyright_license[1]=strcpy(malloc(strlen(text)+1),text);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+ xmltext =ParseXML_Encode_Safe_XML(text);
+
+ translate_copyright_license[0]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
+ translate_copyright_license[1]=strcpy(malloc(strlen(xmltext)+1) ,xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring;
+
int d;
XMLPARSE_ASSERT_INTEGER(_tag_,direction,d);
if(d<0 || d>8)
XMLPARSE_INVALID(_tag_,direction);
- translate_turn[d]=strcpy(malloc(strlen(string)+1),string);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+
+ translate_turn[d]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring;
int d;
XMLPARSE_ASSERT_INTEGER(_tag_,direction,d);
if(d<0 || d>8)
XMLPARSE_INVALID(_tag_,direction);
- translate_heading[d]=strcpy(malloc(strlen(string)+1),string);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+
+ translate_heading[d]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring;
Highway highway;
XMLPARSE_ASSERT_STRING(_tag_,type);
if(highway==Way_Count)
XMLPARSE_INVALID(_tag_,type);
- translate_highway[highway]=strcpy(malloc(strlen(string)+1),string);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+
+ translate_highway[highway]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring;
+
XMLPARSE_ASSERT_STRING(_tag_,type);
XMLPARSE_ASSERT_STRING(_tag_,string);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+
if(!strcmp(type,"shortest"))
- translate_route_shortest=strcpy(malloc(strlen(string)+1),string);
+ translate_route_shortest=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
else if(!strcmp(type,"quickest"))
- translate_route_quickest=strcpy(malloc(strlen(string)+1),string);
+ translate_route_quickest=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
else
XMLPARSE_INVALID(_tag_,type);
}
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring;
+
XMLPARSE_ASSERT_STRING(_tag_,type);
XMLPARSE_ASSERT_STRING(_tag_,string);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+
if(!strcmp(type,"waypoint"))
{
- translate_html_waypoint=malloc(strlen(string)+1+sizeof("<span class='w'>")+sizeof("</span>"));
- sprintf(translate_html_waypoint,"<span class='w'>%s</span>",string);
+ translate_html_waypoint=malloc(strlen(xmlstring)+1+sizeof("<span class='w'>")+sizeof("</span>"));
+ sprintf(translate_html_waypoint,"<span class='w'>%s</span>",xmlstring);
}
else if(!strcmp(type,"junction"))
- translate_html_junction=strcpy(malloc(strlen(string)+1),string);
+ translate_html_junction=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
else
XMLPARSE_INVALID(_tag_,type);
}
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring;
+
XMLPARSE_ASSERT_STRING(_tag_,type);
XMLPARSE_ASSERT_STRING(_tag_,string);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+
if(!strcmp(type,"start"))
- translate_gpx_start=strcpy(malloc(strlen(string)+1),string);
+ translate_gpx_start=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
else if(!strcmp(type,"inter"))
- translate_gpx_inter=strcpy(malloc(strlen(string)+1),string);
+ translate_gpx_inter=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
else if(!strcmp(type,"trip"))
- translate_gpx_trip=strcpy(malloc(strlen(string)+1),string);
+ translate_gpx_trip=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
else if(!strcmp(type,"finish"))
- translate_gpx_finish=strcpy(malloc(strlen(string)+1),string);
+ translate_gpx_finish=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
else
XMLPARSE_INVALID(_tag_,type);
}
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_html_title=strcpy(malloc(strlen(text)+1),text);
+ xmltext=ParseXML_Encode_Safe_XML(text);
+
+ translate_html_title=strcpy(malloc(strlen(xmltext)+1),xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring,*xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,string);
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_html_start[0]=strcpy(malloc(strlen(string)+1),string);
- translate_html_start[1]=malloc(strlen(text)+1+sizeof("<span class='b'>")+sizeof("</span>"));
- sprintf(translate_html_start[1],text,"%s","<span class='b'>%s</span>");
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+ xmltext =ParseXML_Encode_Safe_XML(text);
+
+ translate_html_start[0]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
+ translate_html_start[1]=malloc(strlen(xmltext)+1+sizeof("<span class='b'>")+sizeof("</span>"));
+ sprintf(translate_html_start[1],xmltext,"%s","<span class='b'>%s</span>");
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring,*xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,string);
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_html_node[0]=strcpy(malloc(strlen(string)+1),string);
- translate_html_node[1]=malloc(strlen(text)+1+2*sizeof("<span class='b'>")+2*sizeof("</span>"));
- sprintf(translate_html_node[1],text,"%s","<span class='t'>%s</span>","<span class='b'>%s</span>");
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+ xmltext =ParseXML_Encode_Safe_XML(text);
+
+ translate_html_node[0]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
+ translate_html_node[1]=malloc(strlen(xmltext)+1+2*sizeof("<span class='b'>")+2*sizeof("</span>"));
+ sprintf(translate_html_node[1],xmltext,"%s","<span class='t'>%s</span>","<span class='b'>%s</span>");
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring,*xmltext;
const char *p;
char *q;
XMLPARSE_ASSERT_STRING(_tag_,string);
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_html_segment[0]=strcpy(malloc(strlen(string)+1),string);
- translate_html_segment[1]=malloc(strlen(text)+1+2*sizeof("<span class='b'>")+2*sizeof("</span>"));
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+ xmltext =ParseXML_Encode_Safe_XML(text);
+
+ translate_html_segment[0]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
+ translate_html_segment[1]=malloc(strlen(xmltext)+1+2*sizeof("<span class='b'>")+2*sizeof("</span>"));
- p=text;
+ p=xmltext;
q=translate_html_segment[1];
while(*p!='%' && *(p+1)!='s')
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring,*xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,string);
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_html_stop[0]=strcpy(malloc(strlen(string)+1),string);
- translate_html_stop[1]=strcpy(malloc(strlen(text)+1),text);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+ xmltext =ParseXML_Encode_Safe_XML(text);
+
+ translate_html_stop[0]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
+ translate_html_stop[1]=strcpy(malloc(strlen(xmltext)+1) ,xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmlstring,*xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,string);
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_html_total[0]=strcpy(malloc(strlen(string)+1),string);
- translate_html_total[1]=strcpy(malloc(strlen(text)+1),text);
+ xmlstring=ParseXML_Encode_Safe_XML(string);
+ xmltext =ParseXML_Encode_Safe_XML(text);
+
+ translate_html_total[0]=strcpy(malloc(strlen(xmlstring)+1),xmlstring);
+ translate_html_total[1]=strcpy(malloc(strlen(xmltext)+1) ,xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_gpx_desc=strcpy(malloc(strlen(text)+1),text);
+ xmltext=ParseXML_Encode_Safe_XML(text);
+
+ translate_gpx_desc=strcpy(malloc(strlen(xmltext)+1),xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_gpx_name=strcpy(malloc(strlen(text)+1),text);
+ xmltext=ParseXML_Encode_Safe_XML(text);
+
+ translate_gpx_name=strcpy(malloc(strlen(xmltext)+1),xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_gpx_step=strcpy(malloc(strlen(text)+1),text);
+ xmltext=ParseXML_Encode_Safe_XML(text);
+
+ translate_gpx_step=strcpy(malloc(strlen(xmltext)+1),xmltext);
}
return(0);
{
if(_type_&XMLPARSE_TAG_START && store)
{
+ char *xmltext;
+
XMLPARSE_ASSERT_STRING(_tag_,text);
- translate_gpx_final=strcpy(malloc(strlen(text)+1),text);
+ xmltext=ParseXML_Encode_Safe_XML(text);
+
+ translate_gpx_final=strcpy(malloc(strlen(xmltext)+1),xmltext);
}
return(0);