i18n mit gettext

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
AFX
User
Beiträge: 51
Registriert: Samstag 4. September 2021, 08:40

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.
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

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
AFX
User
Beiträge: 51
Registriert: Samstag 4. September 2021, 08:40

Das hat nichts geändert; mit dem absoluten Pfad kommt dieselbe Fehlermeldung.
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Dann soltest Du die po Datei kompilieren.
gettetxt sucht die mo Datei.
Gruss Peter
Antworten