Gettext und sprintf
Hallo,
ich möchte einen meldungstext übersetzen.
Der code sieht bisher in etwa so aus:
Dieser code kann ohne probleme kompiliert werden, erstelle ich jedoch eine pot oder po datei steht in dieser nur "%s" und nicht der Text.
Schreibe ich das Makro EM mit printf(_("%s", meldung)) kann das Programm nicht mehr kompiliert werden. Hat jemand einen Tipp für mich?
Viele Grüße,
Sanastasia
ich möchte einen meldungstext übersetzen.
Der code sieht bisher in etwa so aus:
#define _(STRING) gettext(STRING)
#define M sprintf(meldung
#define EM );printf(_("%s"))
main ()
{
char meldung[100];
bindtextdomain(xxxxxx);
textdomain(xxxx);
M "Das ist ein Test" EM
return 0;
}
Schreibe ich das Makro EM mit printf(_("%s", meldung)) kann das Programm nicht mehr kompiliert werden. Hat jemand einen Tipp für mich?
Viele Grüße,
Sanastasia
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 376737
Url: https://administrator.de/contentid/376737
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Sanastasia,
was soll das sein? Eine Hausaufgabe um zu üben wie Makos in C funktionieren?
Das würde doch kein normaler Mensch so programmieren.
In der ersten Zeile das Makro soll wohl _ heissen.
Da denke ich fehlt schon mal ein Leerzeichen:
#define _(STRING) gettext(STRING)
#define _ (STRING) gettext(STRING)
Denn so wie Du es definiert hast heißt das Makro doch _(STRING).
Was die Funktionen in Zeile 8 und 9 machen, ist nicht angegeben. Aber wenn ich in Zeile 10 alle Makros einsetze kommt doch folgendes heraus:
sprintf(meldung "Das ist ein Test" );printf((STRING) gettext(STRING)("%s"))
Ich kann mir nicht vorstellen, dass das wirklich kompiliert wird.
Ich fühle mich eher verarscht. Das ist doch nicht Dein Ernst...
was soll das sein? Eine Hausaufgabe um zu üben wie Makos in C funktionieren?
Das würde doch kein normaler Mensch so programmieren.
In der ersten Zeile das Makro soll wohl _ heissen.
Da denke ich fehlt schon mal ein Leerzeichen:
#define _(STRING) gettext(STRING)
#define _ (STRING) gettext(STRING)
Denn so wie Du es definiert hast heißt das Makro doch _(STRING).
Was die Funktionen in Zeile 8 und 9 machen, ist nicht angegeben. Aber wenn ich in Zeile 10 alle Makros einsetze kommt doch folgendes heraus:
sprintf(meldung "Das ist ein Test" );printf((STRING) gettext(STRING)("%s"))
Ich kann mir nicht vorstellen, dass das wirklich kompiliert wird.
Ich fühle mich eher verarscht. Das ist doch nicht Dein Ernst...
Zitat von @Sanastasia:
Hallo gehts noch?
Erstmal so pampig antworten und dann stimmt das noch nicht mal was du schreibst.
Das makro _ ist ein typisches Makro für den gettext befehl und wenn du nur ein bisschen Ahnung hättest wüsstest du das das genau so geschrieben wird.
Deine Antwort hat auch nicht meine Frage beantwortet warum in der pot datei nur %s steht und was ich machen kann das ich einen übersetzbaren Text habe.
Diese Frage hat sich mittlerweile erledigt aber in keinster weise aufgrund von deinem Kommentar.
Hallo gehts noch?
Erstmal so pampig antworten und dann stimmt das noch nicht mal was du schreibst.
Das makro _ ist ein typisches Makro für den gettext befehl und wenn du nur ein bisschen Ahnung hättest wüsstest du das das genau so geschrieben wird.
Deine Antwort hat auch nicht meine Frage beantwortet warum in der pot datei nur %s steht und was ich machen kann das ich einen übersetzbaren Text habe.
Diese Frage hat sich mittlerweile erledigt aber in keinster weise aufgrund von deinem Kommentar.
return 0;