sanastasia
Goto Top

Gettext und sprintf

Hallo,
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; 
}
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

Content-ID: 376737

Url: https://administrator.de/contentid/376737

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

Bl0ckS1z3
Bl0ckS1z3 12.06.2018 um 07:11:15 Uhr
Goto Top
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...
Sanastasia
Sanastasia 12.06.2018 um 14:26:13 Uhr
Goto Top
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.
Bl0ckS1z3
Bl0ckS1z3 12.06.2018 um 15:07:13 Uhr
Goto Top
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.

return 0;