sanastasia
Goto Top

Sprachumschaltung gettext und poedit

Hallo,
ich weiß, ich habe die Frage schon einmal gestellt aber leider keine Antwort erhalten die mein Problem löst.
Schreibe gerade ein Programm zur Sprachumschaltung mit gettext und poedit.
Das ist erstmal das Quellprogramm:
Das ist der Quellcode:
#include <stdio.h>
#include <string.h>
#include <libintl.h>
#include <locale.h>

int main()
{
setlocale (LC_ALL, "");  
textomain("de");  
bindtextdomain ("de","home/Computer");  

printf(gettext("Dieser Text soll übersetzt werden."))  

return 0;
}

Nun kompiliere ich bisher immer folgendermaßen:
1. kompilieren mit gcc
2. kompilieren mit xgettext(sodass eine pot Datei entsteht)
3. kompilieren mit msginit (msginit --Input=test.pot --output=test.po)
Dann lasse ich die po Datei mit poedit übersetzen, die entstandene po Datei und mo Datei speichere ich im ordner
z.b. Computer/de/LC_MESSAGES ab
4. anschließend kompiliere ich das Quellprogramm mit msgfmt test.po -o test.mo in dem Ordner indem das Quellprogramm auch ist.
5. Ich möchte ausgeben ./test

Nun sollte das Programm je nach gesetzter Umgebungsvariable
also z.B. Export LANG=en_US in entsprechender Sprache ausgegeben werden, das tut es aber nicht.

Hat hier vielleicht jemand eine Idee woran das liegen könnte?

Content-ID: 374741

Url: https://administrator.de/forum/sprachumschaltung-gettext-und-poedit-374741.html

Ausgedruckt am: 16.02.2025 um 19:02 Uhr

godlie
godlie 23.05.2018 um 14:57:33 Uhr
Goto Top
Hallo,

wenn ich mir das so ansehe, tippe ich darauf das deine po Files falsch benannt sind. Sie sollten gleich heisen wie deine bindtextdomain.

Schau dir das hier mal an da wird das sehr einfach gezeigt, wie die Strukturen u. Dateinamen auszusehen haben.
Sanastasia
Sanastasia 23.05.2018 um 15:26:58 Uhr
Goto Top
Ok, also ich hatte das so verstanden:
textdomain ("Name des übersetzten po files")
bindtextdomain("Name des übersetzten po files" , "Pfad zu dem Ordner in dem sich das übersetzte PO-file befindet")

Hab ich das so richtig verstanden?
godlie
godlie 23.05.2018 um 16:21:55 Uhr
Goto Top
Als kleines Beispiel:

bindtextdomain ("hello", "/usr/share/locale/");  
textdomain ("hello");  

Bedeutet bei einer Locale einstellung von "en" das dein File folgend heisen und gespeichert sein sollte:
/usr/share/locale/en/hello.po
/usr/share/locale/en/hello.mo