Opened 2 years ago

Last modified 2 years ago

#1301 new defect/bug

English navigational messages have unnecessary suffixes pronounced

Reported by: tryagain Owned by: KaZeR
Priority: major Milestone:
Component: core Version: git master
Severity: normal Keywords:
Cc:

Description (last modified by tryagain)

Since r6090, navit in English mode attempts to pronounce some suffixes starting with pipe '|' character.

These messages look like an attempt to simulate GNU gettext contexts.

Unfortunately, we can't use pgettext right now, because it's not supported by the library version we have under support/gettext_intl (of version 0.14.1)

Change History (5)

comment:1 follow-up: Changed 2 years ago by tryagain

So, possible options seem to be:

  • upgrade gettext_intl (and be ready to work with issues on older OSes, which have an older version of this library);
  • wider implement workaround like the one used here;

I have already used the last option in the Russian translation, and I think it is makes sense to announce direction of merge and, especially, u-turn manoeuvres. Maybe we could skip direction part for left u-turns and merges on right-handed roads. Same for right u-turns and merges on left-handed roads.

[Updated code links to point to proper 6090 svn revision]

Last edited 2 years ago by tryagain (previous) (diff)

comment:2 in reply to: ↑ 1 Changed 2 years ago by jandegr

comment:3 follow-up: Changed 2 years ago by mvglasow (2)

r5090 is the HighFive? merge, which does introduce some strings with suffixes. However, this was not my invention, as I have found similar strings in earlier versions of the code, which presumably suffer from the same issue.

r5090 attempts to fix that by providing an English translation (en.po.in), which drops the suffixes from these strings (e.g. "merge|left" translates to "merge"). @tryagain: what is your platform and locale?

Another option would be to "sanitize" strings before passing them to the speech engine, i.e. look for a pipe character and, if found, drop it along with all that follows it.

Sourceforge is still down, so unfortunately the links don't help me much at the moment.

We need the contexts because some languages have distinctions which English doesn't have: e.g. "into Main Street" and "into Market Square" become "in *die* Hauptstraße" and "in *den* Marktplatz" in German.

As for directions of merge and U turns: I intentionally left those out as they're mostly redundant. In countries that drive on the right, merge maneuvers and U-turns are almost always to the left (and vice versa for countries that drive on the left). Announcing the direction would result in lots of redundant information being announced (which some drivers, and even more passengers, find annoying – it's short of announcing "stay on the motorway" at each exit).

Unfortunately Navit currently doesn't have a way to figure out which side of the road we should be driving on, so we can't figure out if the direction of the maneuver differs from the "default".

For now I'd stick with direction-agnostic announcements and have drivers refer to the navigation icons or the map. If one day we have some way of figuring out the "default" direction for those maneuvers, we can introduce the direction for non-default maneuvers.

comment:4 Changed 2 years ago by tryagain

  • Description modified (diff)

comment:5 in reply to: ↑ 3 Changed 2 years ago by tryagain

Replying to http://wiki.navit-project.org/index.php/user:mvglasow (2):

r5090 attempts to fix that by providing an English translation (en.po.in), which drops the suffixes from these strings (e.g. "merge|left" translates to "merge"). @tryagain: what is your platform and locale?

I use Russian locale, and sometimes test under different locales, including very strange ones like "C". We also seem to support some platforms which do not have i18n support (tomtom).

Another option would be to "sanitize" strings before passing them to the speech engine, i.e. look for a pipe character and, if found, drop it along with all that follows it.

Yeah, that's what i was attempting to point out with my links.

Sourceforge is still down, so unfortunately the links don't help me much at the moment.

It's up now.

As for directions of merge and U turns: I intentionally left those out as they're mostly redundant. In countries that drive on the right, merge maneuvers and U-turns are almost always to the left (and vice versa for countries that drive on the left). Announcing the direction would result in lots of redundant information being announced (which some drivers, and even more passengers, find annoying – it's short of announcing "stay on the motorway" at each exit).

Unfortunately Navit currently doesn't have a way to figure out which side of the road we should be driving on, so we can't figure out if the direction of the maneuver differs from the "default".

For now I'd stick with direction-agnostic announcements and have drivers refer to the navigation icons or the map. If one day we have some way of figuring out the "default" direction for those maneuvers, we can introduce the direction for non-default maneuvers.

Maybe a configuration option? I do not think there are much people often driving both in rhs and lhs countries.

Btw, list of lhs countries is here: http://www.worldstandards.eu/cars/list-of-left-driving-countries/ If we define "current country", we may easilly deduce sideness from that parameter.

Note: See TracTickets for help on using tickets.