Patch:core:Added patches from Bernhard Heibler for announcing street names
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 31 Mar 2008 16:40:21 +0000 (16:40 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 31 Mar 2008 16:40:21 +0000 (16:40 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@975 ffa7fe5e-494d-0410-b361-a75ebd5db220

po/de.po
src/navigation.c

index de59954..860a487 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -46,99 +46,117 @@ msgstr "Benutze '%s'\n"
 msgid "No instance has been created, exiting\n"
 msgstr "Es wurde keine Instanz erzeugt, Ende\n"
 
-#: ../src/navigation.c:162
+#: ../src/navigation.c:163
 #, c-format
 msgid "%d m"
 msgstr "%d Meter"
 
-#: ../src/navigation.c:164
+#: ../src/navigation.c:165
 #, c-format
 msgid "in %d m"
 msgstr "In %d metern"
 
-#: ../src/navigation.c:168
+#: ../src/navigation.c:169
 #, c-format
 msgid "%d meters"
 msgstr "%d Meter"
 
-#: ../src/navigation.c:170
+#: ../src/navigation.c:171
 #, c-format
 msgid "in %d meters"
 msgstr "In %d metern"
 
-#: ../src/navigation.c:176
+#: ../src/navigation.c:177
 #, c-format
 msgid "%d.%d kilometer"
 msgstr "%d,%d Kilometer"
 
-#: ../src/navigation.c:178
+#: ../src/navigation.c:179
 #, c-format
 msgid "in %d.%d kilometers"
 msgstr "In %d,%d Kilometern"
 
-#: ../src/navigation.c:182
+#: ../src/navigation.c:183
 #, c-format
 msgid "one kilometer"
 msgid_plural "%d kilometers"
 msgstr[0] "einen Kilometer"
 msgstr[1] "%d Kilometer"
 
-#: ../src/navigation.c:184
+#: ../src/navigation.c:185
 #, c-format
 msgid "in one kilometer"
 msgid_plural "in %d kilometers"
 msgstr[0] "In einem Kilometer"
 msgstr[1] "In %d Kilometern"
 
-#: ../src/navigation.c:404
+#: ../src/navigation.c:406
 msgid "right"
 msgstr "rechts"
 
-#: ../src/navigation.c:411
+#: ../src/navigation.c:413
 msgid "left"
 msgstr "links"
 
-#: ../src/navigation.c:415
+#: ../src/navigation.c:417
 msgid "easily "
 msgstr "leicht "
 
-#: ../src/navigation.c:419
+#: ../src/navigation.c:421
 msgid "strongly "
 msgstr "scharf "
 
-#: ../src/navigation.c:422
+#: ../src/navigation.c:424
 msgid "unknown "
 msgstr "unbekannt "
 
 #
-#: ../src/navigation.c:428
+#: ../src/navigation.c:430
 msgid "When possible, please turn around"
 msgstr "Wenn möglich bitte wenden"
 
-#: ../src/navigation.c:435
+#: ../src/navigation.c:437
 #, c-format
 msgid "Follow the road for the next %s"
 msgstr "Dem Straßenverlauf %s folgen"
 
-#: ../src/navigation.c:439
+#: ../src/navigation.c:441
 msgid "soon"
 msgstr "Demnächst"
 
-#: ../src/navigation.c:445
+#: ../src/navigation.c:447
 msgid "now"
 msgstr "Jetzt"
 
-#: ../src/navigation.c:448
+#: ../src/navigation.c:450
 msgid "error"
 msgstr "fehler"
 
+#: ../src/navigation.c:474
+msgid "exit"
+msgstr "Ausfahrt"
+
+#: ../src/navigation.c:476
+msgid "ramp"
+msgstr "Autobahneinfahrt"
+
+#: ../src/navigation.c:510
+#, c-format
+msgid "Turn %1$s%2$s %3$s onto %4$s"
+msgstr "%3$s %1$s%2$s abbiegen auf den %4$s"
+
+#: ../src/navigation.c:512
+#, c-format
+msgid "Turn %1$s%2$s %3$s into %4$s"
+msgstr "%3$s %1$s%2$s abbiegen auf die %4$s"
+
 #. TRANSLATORS: The first argument is strength, the second direction and the third distance
-#: ../src/navigation.c:452
+#: ../src/navigation.c:516
 #, c-format
 msgid "Turn %1$s%2$s %3$s"
 msgstr "%3$s %1$s%2$s abbiegen"
 
-#: ../src/navigation.c:455
+#: ../src/navigation.c:522
 #, c-format
 msgid "You have reached your destination %s"
 msgstr "%s haben Sie ihr Ziel erreicht"
index 55417e5..ec5c208 100644 (file)
@@ -110,6 +110,7 @@ struct navigation_itm {
        int length;
        int dest_time;
        int dest_length;
+       int told;
        struct navigation_itm *next;
        struct navigation_itm *prev;
 };
@@ -242,6 +243,7 @@ navigation_itm_new(struct navigation *this_, struct item *ritem)
        struct coord c[5];
 
        if (ritem) {
+               ret->told=0;
                if (! item_attr_get(ritem, attr_street_item, &street_item)) {
                        dbg(0,"no street item\n");
                        return NULL;
@@ -448,8 +450,73 @@ show_maneuver(struct navigation *nav, struct navigation_itm *itm, struct navigat
                d=g_strdup(_("error"));
        }
        if (cmd->itm->next) {
+               short tellStreetName = 0;
+               char  * streetName = 0;
+               if(cmd->itm->name1 || cmd->itm->name2 || cmd->itm->item.type == type_ramp) // If the next street has a name
+               {
+                  if(cmd->itm->name1 && cmd->itm->name2 )
+                                       streetName = g_strdup_printf("%s %s", cmd->itm->name1, cmd->itm->name2);
+                        else if(cmd->itm->name1)
+                     streetName = g_strdup(cmd->itm->name1);
+                  else if(cmd->itm->name2)
+                     streetName = g_strdup(cmd->itm->name2);
+
+                        // Now special handling for ramps and exists
+                        
+                  if(streetName == 0 && cmd->itm->item.type == type_ramp)
+                        {
+                                       //printf(">> Next is ramp %lx current is %lx \n", cmd->itm->item.type, itm->item.type);
+                        
+                                       if(itm->item.type == type_ramp)
+                                               streetName = 0;  // looks like we stay on the ramp
+                                       if(itm->item.type == type_highway_city || itm->item.type == type_highway_land )
+                                   streetName = g_strdup(_("exit"));                            
+                                       else
+                                   streetName = g_strdup(_("ramp"));
+                        }
+
+                  if(type == attr_navigation_speech) // In voice mode
+                  {
+                                // In Voice Mode only tell the street name in level 1 or in level 0 if level 1
+                                // was skipped
+                        
+                          if (level == 1) // we are close to the intersection
+                          {
+                            cmd->itm->told = 1; // remeber to be checked when we turn
+                          tellStreetName = 1; // Ok so we tell the name of the street 
+                          }
+
+                          if (level == 0)
+                                {
+                                 if(cmd->itm->told == 0) // we are write at the intersection
+                                               tellStreetName = 1; 
+                                       else
+                                         cmd->itm->told = 0;  // reset just in case we come to the same street again
+                                }
+
+          }
+                  else
+                    tellStreetName = 1;
+               }
+
+               if(streetName && tellStreetName )
+               {
+               /* TRANSLATORS: The first argument is strength, the second direction and the third distance */
+       
+               if( strcasestr(streetName,"weg") 
+                  || strcasestr(streetName,"platz")
+                  || strcasestr(streetName,"ring"))
+                 ret=g_strdup_printf(_("Turn %1$s%2$s %3$s onto %4$s"), strength, dir, d, streetName);
+               else
+                  ret=g_strdup_printf(_("Turn %1$s%2$s %3$s into %4$s"), strength, dir, d, streetName);
+               }
+               else
                /* TRANSLATORS: The first argument is strength, the second direction and the third distance */
                ret=g_strdup_printf(_("Turn %1$s%2$s %3$s"), strength, dir, d);
+               
+               if(streetName)
+                       g_free(streetName);
        }
        else
                ret=g_strdup_printf(_("You have reached your destination %s"), d);