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-Key: 374741

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

Printed on: April 25, 2024 at 05:04 o'clock

Member: godlie
godlie May 23, 2018 at 12:57:33 (UTC)
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.
Member: Sanastasia
Sanastasia May 23, 2018 at 13:26:58 (UTC)
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?
Member: godlie
godlie May 23, 2018 at 14:21:55 (UTC)
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