django -> translation

Django, Flask, Bottle, WSGI, CGI…
Antworten
alexPython
User
Beiträge: 52
Registriert: Donnerstag 7. April 2011, 13:26

Hallo,
ich bin dabei meine anwendung mehrsprachig zu gestalten.
Muss ich die zu übersetzenden ausdrücke immer als string definieren?
-> _("Welcome to my site.")
oder kann ich auch variablen verwenden
-> _(myvar1)

so dass in der .po datei folgendes steht:
#: path/to/python/module.py:23
msgid myvar1
msgstr "englischer text"

wenn ich nämlich
_("Welcome to my site.")
verwende muss ich ja in der .po datei dann folgendes schreiben für englisch
#: path/to/python/module.py:23
msgid "Welcome to my site."
msgstr "Welcome to my site."

Des weiteren habe ich noch eine frage:
ich will das der user zwischen 2 sprachen auswählen kann.
je nach dem was er ausgewählt hat wird die "django_language"-session variable
gesetzt. das mache ich am anfang meiner anwendung.
wird die session-variable dann immer geprüft, wenn ein zu übersetzender string _("bla") auftaucht?
Gruß
BlackJack

@alexPython: Nein so geht das nicht. Ich wüsste auch nicht was

Code: Alles auswählen

#: path/to/python/module.py:23
msgid myvar1
msgstr "englischer text"
dann *bedeuten* soll?

Und das letzte Schnippsel solltest Du eigentlich nicht benötigen. Wenn der Text im Schlüssel schon der ist, der auch ausgegeben werden soll, dann braucht man den nicht noch einmal explizit als Übersetzung angeben.
alexPython
User
Beiträge: 52
Registriert: Donnerstag 7. April 2011, 13:26

ok, leuchtet mir ein, das mit der variablen

Zur übersetzung:
Das heißt dann, wenn keine übersetzung für die sprache
existiert, lasst er den text so wie er ist.

Gruß
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

alexPython hat geschrieben:Zur übersetzung:
Das heißt dann, wenn keine übersetzung für die sprache
existiert, lasst er den text so wie er ist.
Genau, daher haben Open-Source-Programme fast nie eine einglische Übersetzung, weil die eh standardmäßig auf Englisch sind (also nicht dass es nicht möglich ist, man kann Locale ``en_US`` oder ähnliches angeben stadd dem Standard-``C``/``POSIX``).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten