Seite 1 von 1

i18n mit gettext

Verfasst: Dienstag 15. März 2022, 12:04
von AFX
Ich habe vor, eine Anwendung, die ich gerade programmiere, zu internationalisieren, was ich mit gettext erreichen will. Nun habe ich ein Testprogramm: test.py in einem Ordner pcrm:

Code: Alles auswählen

import gettext
import random

trans = gettext.translation("pcrm", "locale", ["de"])
trans.install()

print(_("Hello world"))
der Ordner pcrm enthält den Ordner locale, dieser wiederum einen Ordner de (für das deutsche Locale). In diesem habe ich einen Ordner LC_MESSAGES mit der po-Datei pcrm.po:

Code: Alles auswählen

msgid "Hello World"
msgstr "Hallo Welt!"
Es heißt aber beim Ausführen des Programms: "No translation file found for domain: 'pcrm'"

Was fehlt? Ich habe viel gesucht, aber leider kein vernünftiges Tutorial zu gettext gefunden, daher wäre ich jedem sehr verbunden, der mir da einen Tipp geben kann.

Re: i18n mit gettext

Verfasst: Dienstag 15. März 2022, 12:23
von peterpy
Hallo AFX,
gib deinem Ordner locale den ganzen Pfad an.
from pathlib import Path
uebersetzungsdatei = Path("/pfad/zu/pcrm/locale")
Und Du solltest eine pcrm.mo Datei haben.
Erstellst Du die Übersetzung mit poedit?
Im Reiter Datei findest Du MO Datei erstellen.
Poedit hat eine gute Hilfe.


Gruss Peter

Re: i18n mit gettext

Verfasst: Dienstag 15. März 2022, 12:39
von AFX
Das hat nichts geändert; mit dem absoluten Pfad kommt dieselbe Fehlermeldung.

Re: i18n mit gettext

Verfasst: Dienstag 15. März 2022, 12:48
von peterpy
Dann soltest Du die po Datei kompilieren.
gettetxt sucht die mo Datei.
Gruss Peter