gladish: credit translators in the about dialog
_(translator-credits) is not used because i think it will lead to need to translate names multiple times, because some of them appear as part of author credits, for example.
This commit is contained in:
parent
3b87aaf97d
commit
67ba277fa5
|
@ -153,3 +153,42 @@ char * catdupv(const char * s1, const char * s2, ...)
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char * catdup_array(const char ** array, const char * delimiter)
|
||||||
|
{
|
||||||
|
size_t len;
|
||||||
|
size_t i;
|
||||||
|
size_t delimiter_length;
|
||||||
|
char * buffer;
|
||||||
|
char * p;
|
||||||
|
|
||||||
|
delimiter_length = delimiter != NULL ? strlen(delimiter) : 0;
|
||||||
|
|
||||||
|
len = 0;
|
||||||
|
for (i = 0; array[i] != NULL; i++)
|
||||||
|
{
|
||||||
|
len += strlen(array[i]);
|
||||||
|
len += delimiter_length;
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer = malloc(len);
|
||||||
|
if (buffer == NULL)
|
||||||
|
{
|
||||||
|
log_error("malloc(%zu) failed.", len);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
p = buffer;
|
||||||
|
for (i = 0; array[i] != NULL; i++)
|
||||||
|
{
|
||||||
|
len = strlen(array[i]);
|
||||||
|
memcpy(p, array[i], len);
|
||||||
|
p += len;
|
||||||
|
memcpy(p, delimiter, delimiter_length);
|
||||||
|
p += delimiter_length;
|
||||||
|
}
|
||||||
|
|
||||||
|
*p = 0;
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
|
@ -31,5 +31,6 @@ char * catdup(const char * s1, const char * s2);
|
||||||
char * catdup3(const char * s1, const char * s2, const char * s3);
|
char * catdup3(const char * s1, const char * s2, const char * s3);
|
||||||
char * catdup4(const char * s1, const char * s2, const char * s3, const char * s4);
|
char * catdup4(const char * s1, const char * s2, const char * s3, const char * s4);
|
||||||
char * catdupv(const char * s1, const char * s2, ...);
|
char * catdupv(const char * s1, const char * s2, ...);
|
||||||
|
char * catdup_array(const char ** array, const char * delimiter);
|
||||||
|
|
||||||
#endif /* #ifndef CATDUP_H__D42302F1_4D96_4EE4_AC09_E97ED5748277__INCLUDED */
|
#endif /* #ifndef CATDUP_H__D42302F1_4D96_4EE4_AC09_E97ED5748277__INCLUDED */
|
||||||
|
|
33
gui/about.c
33
gui/about.c
|
@ -35,6 +35,7 @@
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#include "../common/file.h"
|
#include "../common/file.h"
|
||||||
|
#include "../common/catdup.h"
|
||||||
|
|
||||||
#define ABOUT_DIALOG_LOGO "ladish-logo-128x128.png"
|
#define ABOUT_DIALOG_LOGO "ladish-logo-128x128.png"
|
||||||
|
|
||||||
|
@ -42,8 +43,30 @@ void show_about(void)
|
||||||
{
|
{
|
||||||
GtkWidget * dialog;
|
GtkWidget * dialog;
|
||||||
GdkPixbuf * pixbuf;
|
GdkPixbuf * pixbuf;
|
||||||
const char * authors[] = {_("Nedko Arnaudov"), _("Nikita Zlobin"), _("Filipe Alexandre Lopes Coelho"), NULL};
|
const char * authors[] =
|
||||||
const char * artists[] = {_("Lapo Calamandrei"), _("Nadejda Pancheva-Arnaudova"), NULL};
|
{
|
||||||
|
_("Nedko Arnaudov"),
|
||||||
|
_("Nikita Zlobin"),
|
||||||
|
_("Filipe Alexandre Lopes Coelho"),
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
const char * artists[] =
|
||||||
|
{
|
||||||
|
_("Lapo Calamandrei"),
|
||||||
|
_("Nadejda Pancheva-Arnaudova"),
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
const char * translators_array[] =
|
||||||
|
{
|
||||||
|
_("Nikita Zlobin"),
|
||||||
|
_("Alexandre Prokoudine"),
|
||||||
|
_("Olivier Humbert"),
|
||||||
|
_("Frank Kober"),
|
||||||
|
_("Maxim Kachur"),
|
||||||
|
_("Jof Thibaut"),
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
char * translators;
|
||||||
char * license;
|
char * license;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char timestamp_str[26];
|
char timestamp_str[26];
|
||||||
|
@ -79,6 +102,12 @@ void show_about(void)
|
||||||
gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(dialog), authors);
|
gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(dialog), authors);
|
||||||
gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(dialog), artists);
|
gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(dialog), artists);
|
||||||
|
|
||||||
|
translators = catdup_array(translators_array, "\n");
|
||||||
|
if (translators != NULL)
|
||||||
|
{
|
||||||
|
gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(dialog), translators);
|
||||||
|
}
|
||||||
|
|
||||||
gtk_widget_show(dialog);
|
gtk_widget_show(dialog);
|
||||||
gtk_dialog_run(GTK_DIALOG(dialog));
|
gtk_dialog_run(GTK_DIALOG(dialog));
|
||||||
gtk_widget_hide(dialog);
|
gtk_widget_hide(dialog);
|
||||||
|
|
Loading…
Reference in New Issue