Я пытаюсь центрировать текст по горизонтали и вертикали в xml doc, разделе комментариев (необходимо автоматизировать это, когда текст транслируется в po-файлах).libxml2: center text в разделе комментариев
Для этого я смешал бойкий и libxml2 API:
static const xmlChar *text[] = {
N_("Configuration file"),
N_("This file was automatically generated."),
N_("Please MAKE SURE TO BACKUP THIS FILE before making changes."),
NULL
};
xmlChar *centered_text (const xmlChar **array)
{
GString *string;
guint i;
string = g_string_new ("\n");
for (i = 0; array[i]; i++)
{
gint width;
width = (80 - strlen (array[i]))/2 + strlen (array[i]);
g_string_append_printf (string, "%*s\n", width, array[i]);
}
return g_string_free (string, FALSE);
}
.......................
xmlDocPtr doc;
xmlChar *content;
xmlNodePtr comment;
doc = xmlNewDoc ((const xmlChar *) "1.0");
content = centered_text (text);
comment = xmlNewDocComment (doc, (const xmlChar *) content);
xmlFree (content);
xmlAddChild ((xmlNodePtr) doc, comment);
И выходной файл выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Configuration file
This file was automatically generated.
Please MAKE SURE TO BACKUP THIS FILE before making changes.
-->
Вот, например, итальянский перевод без выравнивания:
File di configurazione
Questo file è stato generato automaticamente.
Assicurati di file di questo backup prima di apportare modifiche.
Есть ли способ сделать это, используя только libxml2?
XML - это не язык, используемый для стилизации текста, так что вы уверены, что libxml2 делает это? – Rob