diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-01-12 12:16:00 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-01-12 12:16:00 +0200 |
commit | ee98209ab84a338525e0dde9f62633bcf0b08078 (patch) | |
tree | ceea258c1cd6114278dbece609adf560d277dc86 /mplayer.c | |
parent | 23e693d6d2e6d0da74b40ccb8a9f438a9dd846c2 (diff) | |
download | mpv-ee98209ab84a338525e0dde9f62633bcf0b08078.tar.bz2 mpv-ee98209ab84a338525e0dde9f62633bcf0b08078.tar.xz |
translations: add infrastructure for translated OSD messages
Add function set_osd_tmsg() which is a version of set_osd_msg that
translates its format argument. Pass OSD message strings in the
command.c property_osd_display table through mp_gtext before they're
used.
Diffstat (limited to 'mplayer.c')
-rw-r--r-- | mplayer.c | 27 |
1 files changed, 21 insertions, 6 deletions
@@ -1356,10 +1356,10 @@ static mp_osd_msg_t* osd_msg_stack = NULL; * it is pulled on top of the stack, otherwise a new message is created. * */ - -void set_osd_msg(int id, int level, int time, const char* fmt, ...) { +static void set_osd_msg_va(int id, int level, int time, const char *fmt, + va_list ap) +{ mp_osd_msg_t *msg,*last=NULL; - va_list va; int r; // look if the id is already in the stack @@ -1376,9 +1376,7 @@ void set_osd_msg(int id, int level, int time, const char* fmt, ...) { osd_msg_stack = msg; } // write the msg - va_start(va,fmt); - r = vsnprintf(msg->msg, 128, fmt, va); - va_end(va); + r = vsnprintf(msg->msg, 128, fmt, ap); if(r >= 128) msg->msg[127] = 0; // set id and time msg->id = id; @@ -1387,6 +1385,23 @@ void set_osd_msg(int id, int level, int time, const char* fmt, ...) { } +void set_osd_msg(int id, int level, int time, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + set_osd_msg_va(id, level, time, fmt, ap); + va_end(ap); +} + +void set_osd_tmsg(int id, int level, int time, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + set_osd_msg_va(id, level, time, mp_gtext(fmt), ap); + va_end(ap); +} + + /** * \brief Remove a message from the OSD stack * |