Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,
ich möchte einen meldungstext übersetzen.
Der code sieht bisher in etwa so aus:

Quelltext | Drucken

#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; }

#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

Gelöst von lessbess

Zur Lösung
  • Lösung

Klar,  printf(_("%s")) expandiert dann ja zu printf(gettext("%s")) und gettext wird dementsprechend vor printf aufgerufen.

vor 17 Stunden schrieb Gast Sanastasia:

Schreibe ich das Makro EM mit printf(_("%s", meldung)) kann das Programm nicht mehr kompiliert werden.

Das liegt an der Klammerung, mit printf(_("s"),meldung) würde es gehen, wenn auch wieder so wie oben.

Grundsätzlich solltest du das gettext-Makro möglichst da aufrufen wo auch der zu übersetzende Text steht.

vor 17 Stunden schrieb Gast Sanastasia:

#define M sprintf(Meldung,

#define EM );printf(_("%s"))

Solche Konstruktionen mit halboffenen Klammern und Semikolon im rechten Teil des Makros solltest du unbedingt vermeiden.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.