mirror of https://github.com/mpv-player/mpv
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.
This commit is contained in:
parent
23e693d6d2
commit
ee98209ab8
|
@ -2297,12 +2297,12 @@ static int show_property_osd(MPContext *mpctx, const char *pname)
|
||||||
else if (p->osd_progbar) {
|
else if (p->osd_progbar) {
|
||||||
if (prop->type == CONF_TYPE_INT) {
|
if (prop->type == CONF_TYPE_INT) {
|
||||||
if (mp_property_do(pname, M_PROPERTY_GET, &r, mpctx) > 0)
|
if (mp_property_do(pname, M_PROPERTY_GET, &r, mpctx) > 0)
|
||||||
set_osd_bar(mpctx, p->osd_progbar, p->osd_msg,
|
set_osd_bar(mpctx, p->osd_progbar, mp_gtext(p->osd_msg),
|
||||||
prop->min, prop->max, r);
|
prop->min, prop->max, r);
|
||||||
} else if (prop->type == CONF_TYPE_FLOAT) {
|
} else if (prop->type == CONF_TYPE_FLOAT) {
|
||||||
float f;
|
float f;
|
||||||
if (mp_property_do(pname, M_PROPERTY_GET, &f, mpctx) > 0)
|
if (mp_property_do(pname, M_PROPERTY_GET, &f, mpctx) > 0)
|
||||||
set_osd_bar(mpctx, p->osd_progbar, p->osd_msg,
|
set_osd_bar(mpctx, p->osd_progbar, mp_gtext(p->osd_msg),
|
||||||
prop->min, prop->max, f);
|
prop->min, prop->max, f);
|
||||||
} else {
|
} else {
|
||||||
mp_msg(MSGT_CPLAYER, MSGL_ERR,
|
mp_msg(MSGT_CPLAYER, MSGL_ERR,
|
||||||
|
@ -2316,8 +2316,8 @@ static int show_property_osd(MPContext *mpctx, const char *pname)
|
||||||
char *val = mp_property_print(pname, mpctx);
|
char *val = mp_property_print(pname, mpctx);
|
||||||
if (val) {
|
if (val) {
|
||||||
int index = p - property_osd_display;
|
int index = p - property_osd_display;
|
||||||
set_osd_msg(p->osd_id >= 0 ? p->osd_id : OSD_MSG_PROPERTY + index,
|
set_osd_tmsg(p->osd_id >= 0 ? p->osd_id : OSD_MSG_PROPERTY + index,
|
||||||
1, opts->osd_duration, p->osd_msg, val);
|
1, opts->osd_duration, p->osd_msg, val);
|
||||||
free(val);
|
free(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1
mp_osd.h
1
mp_osd.h
|
@ -23,6 +23,7 @@ struct MPContext;
|
||||||
|
|
||||||
void set_osd_bar(struct MPContext *mpctx, int type,const char* name,double min,double max,double val);
|
void set_osd_bar(struct MPContext *mpctx, int type,const char* name,double min,double max,double val);
|
||||||
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, ...);
|
||||||
|
void set_osd_tmsg(int id, int level, int time, const char* fmt, ...);
|
||||||
void rm_osd_msg(int id);
|
void rm_osd_msg(int id);
|
||||||
|
|
||||||
#endif /* MPLAYER_MP_OSD_H */
|
#endif /* MPLAYER_MP_OSD_H */
|
||||||
|
|
27
mplayer.c
27
mplayer.c
|
@ -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.
|
* it is pulled on top of the stack, otherwise a new message is created.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
static void set_osd_msg_va(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)
|
||||||
|
{
|
||||||
mp_osd_msg_t *msg,*last=NULL;
|
mp_osd_msg_t *msg,*last=NULL;
|
||||||
va_list va;
|
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
// look if the id is already in the stack
|
// 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;
|
osd_msg_stack = msg;
|
||||||
}
|
}
|
||||||
// write the msg
|
// write the msg
|
||||||
va_start(va,fmt);
|
r = vsnprintf(msg->msg, 128, fmt, ap);
|
||||||
r = vsnprintf(msg->msg, 128, fmt, va);
|
|
||||||
va_end(va);
|
|
||||||
if(r >= 128) msg->msg[127] = 0;
|
if(r >= 128) msg->msg[127] = 0;
|
||||||
// set id and time
|
// set id and time
|
||||||
msg->id = id;
|
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
|
* \brief Remove a message from the OSD stack
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue