Hallo Community,
ich versuche gerade, wie in https://www.computerbase.de/forum/t...riablen-aus-externer-datei-zugreifen.2096354/ beschrieben, ein Programm mittels gettext übersetzbar zu machen. Folgendes funktioniert:
Sobald ich jedoch versuche, den zu übersetzenden String in eine externe Datei zu packen, also
bekomme ich folgende Compiler-Fehler:
Ich hab versucht die Fehlermeldung zu recherchieren, aber sie scheint wohl in diversen Situationen aufzutreten, die in meinen Augen nichts mit der vorliegenden Situation zu tun haben. Was übersehe ich da?
Vielen Dank,
Photon
ich versuche gerade, wie in https://www.computerbase.de/forum/t...riablen-aus-externer-datei-zugreifen.2096354/ beschrieben, ein Programm mittels gettext übersetzbar zu machen. Folgendes funktioniert:
C:
// main.h
#include <stdio.h>
#include <stdlib.h>
#include <libintl.h>
#include <locale.h>
// main.c
#include "main.h"
int main()
{
#define _(STRING) gettext(STRING)
setlocale (LC_ALL, "");
bindtextdomain ("hello", "/usr/share/locale/");
textdomain ("hello");
const char *message = _("Hello World!");
printf("%s", message);
return EXIT_SUCCESS;
}
Sobald ich jedoch versuche, den zu übersetzenden String in eine externe Datei zu packen, also
C:
// hello.h
extern const char *message;
// hello.c
#include "hello.h"
#include <libintl.h>
#include <locale.h>
#define _(STRING) gettext(STRING)
setlocale (LC_ALL, "");
bindtextdomain ("hello", "/usr/share/locale/");
textdomain ("hello");
const char *message = _("Hello World!");
// main.h
#include <stdio.h>
#include <stdlib.h>
#include "hello.h"
// main.c
#include "main.h"
int main()
{
printf("%s", message);
return EXIT_SUCCESS;
}
bekomme ich folgende Compiler-Fehler:
Code:
$ gcc hello.c main.c -o test
In Datei, eingebunden von /usr/include/locale.h:29,
von hello.c:4:
hello.c:8:12: Fehler: expected declaration specifiers or »...« before numeric constant
8 | setlocale (LC_ALL, "");
| ^~~~~~
hello.c:8:20: Fehler: expected declaration specifiers or »...« before string constant
8 | setlocale (LC_ALL, "");
| ^~
hello.c:9:17: Fehler: expected declaration specifiers or »...« before string constant
9 | bindtextdomain ("hello", "/usr/share/locale/");
| ^~~~~~~
hello.c:9:26: Fehler: expected declaration specifiers or »...« before string constant
9 | bindtextdomain ("hello", "/usr/share/locale/");
| ^~~~~~~~~~~~~~~~~~~~
hello.c:10:13: Fehler: expected declaration specifiers or »...« before string constant
10 | textdomain ("hello");
| ^~~~~~~
hello.c:6:19: Fehler: Initialisierungselement ist nicht konstant
6 | #define _(STRING) gettext(STRING)
| ^~~~~~~
hello.c:12:27: Anmerkung: bei Substitution des Makros »_«
12 | const char *message = _("Hello World!");
Ich hab versucht die Fehlermeldung zu recherchieren, aber sie scheint wohl in diversen Situationen aufzutreten, die in meinen Augen nichts mit der vorliegenden Situation zu tun haben. Was übersehe ich da?
Vielen Dank,
Photon
Zuletzt bearbeitet: