mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Fix the way we handle translated event names
Here is what Linus reported: I think you have made a mistake in trying to translate some of libdivecomputer.c Translating some of those things based on locale is *wrong*, because they are saved in the XML file. That covers at least the warnings: they'll get translated when you import them, and then saved to the XML file as that translation, but now if you start subsurface in another locale, they will not get translated back. So translating XML file contents is fundamentally buggy. It just shouldn't be done. So all the "translations" for the event handling are buggy, and generate crap. Please don't do that. Leave them as English. And of course he is absolutely right. However, instead of not translating them at all, this commit fixes things a better way - we now mark the strings for translation but store the original English strings everywhere (in the in-memory data structure as well as in the XML file). Only when we actually display something on the screen (in a tooltip or in the filter dialog) do we actually translate the strings into the native language. This should address both Linus' issue and the desire to have localized event texts. Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
e47b52ecdb
commit
016365c5f1
3 changed files with 31 additions and 22 deletions
|
@ -284,7 +284,8 @@ void evn_foreach(void (*callback)(const char *, int *, void *), void *data)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < evn_used; i++) {
|
||||
callback(ev_namelist[i].ev_name, &ev_namelist[i].plot_ev, data);
|
||||
/* here we display an event name on screen - so translate */
|
||||
callback(_(ev_namelist[i].ev_name), &ev_namelist[i].plot_ev, data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -349,7 +350,8 @@ static void plot_one_event(struct graphics_context *gc, struct plot_info *pi, st
|
|||
cairo_move_to(gc->cr, x-9, y+4);
|
||||
cairo_line_to(gc->cr, x-9, y+4);
|
||||
cairo_stroke(gc->cr);
|
||||
attach_tooltip(x-15, y-6, 12, 12, event->name);
|
||||
/* we display the event on screen - so translate */
|
||||
attach_tooltip(x-15, y-6, 12, 12, _(event->name));
|
||||
}
|
||||
|
||||
static void plot_events(struct graphics_context *gc, struct plot_info *pi, struct dive *dive)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue