Deutsche Lokalisierung unter Linux funktioniert hier nicht

German
User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Deutsche Lokalisierung unter Linux funktioniert hier nicht

by Linuxdirk » Post

Moin!

Eine ganz kurze Frage habe ich da mal: Irgendwie scheint bei mir die deutsche Lokalisierung nicht zu funktionieren …

Die Sprachdateien sind da, und Minetest wurde mit Gettext-Unterstützung kompiliert. Sowohl LANG, als auch LC_MESSAGES (und sogar testweise mal LC_ALL) sind entsprechend gesetzt. Die Lokalisierung funktioniert in allen Programmen, die eine Lokalisierung unterstützen – daran kann es also nicht liegen.

Hier (eventuell) relevante Systeminformationen

Code: Select all

$ uname -rms
Linux 3.16.1-1-ARCH x86_64

$ minetest --version
Minetest 0.4.10
Using Irrlicht 1.8.1
Build info: VER=0.4.10 BUILD_TYPE=Release RUN_IN_PLACE=0 USE_GETTEXT=1 USE_SOUND=1 USE_CURL=1 USE_FREETYPE=1 USE_LUAJIT=0 STATIC_SHAREDIR=/usr/share/minetest

$ pacman -Ql minetest | grep locale/de
minetest /usr/share/locale/de/
minetest /usr/share/locale/de/LC_MESSAGES/
minetest /usr/share/locale/de/LC_MESSAGES/minetest.mo

$ locale
LANG=de_DE.utf8
LC_CTYPE="de_DE.utf8"
LC_NUMERIC="de_DE.utf8"
LC_TIME="de_DE.utf8"
LC_COLLATE="de_DE.utf8"
LC_MONETARY="de_DE.utf8"
LC_MESSAGES="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
LC_ALL=de_DE.utf8

$ cat /etc/locale.gen
de_DE.UTF-8 UTF-8
en_DK.UTF-8 UTF-8
en_US.UTF-8 UTF-8
Weitere Informationen kann ich bei Bedarf gern nachliefern. Für jegliche Tipps bin ich dankbar.

Grüße,
Dirk

User avatar
Casimir
Member
Posts: 1206
Joined: Fri Aug 03, 2012 16:59
GitHub: CasimirKaPazi

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Casimir » Post

Schau mal ob in der minetest.conf "language = DE" steht.

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Linuxdirk » Post

Casimir wrote:Schau mal ob in der minetest.conf "language = DE" steht.
Stand nicht, habe es mal rein geschrieben, aber keine Änderung. Ich habe auch de_DE.utf8, sowie weitere Abwandlungen probiert. auch mit exporteten oder vorangestellten Umgebungsvariablen in diversen Abwandlungen hat es nicht geklappt.

User avatar
PilzAdam
Member
Posts: 4026
Joined: Fri Jul 20, 2012 16:19
GitHub: PilzAdam
IRC: PilzAdam
Location: Germany

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by PilzAdam » Post

Kannst du minetest mit --verbose starten und die Ausgabe hier posten (nur einmal kurz ins Hauptmenü sollte reichen)? Vielleicht hilft's ja...

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Linuxdirk » Post

Gestartet, und nach dem Starten wieder beendet.

Code: Select all

$ minetest --verbose
16:47:01: INFO[main]: Using system-wide paths (NOT RUN_IN_PLACE)
16:47:01: INFO[main]: path_share = /usr/share/minetest
16:47:01: INFO[main]: path_user  = /home/dirk/.minetest
16:47:01: INFO[main]: minetest with SER_FMT_VER_HIGHEST_READ=26, VER=0.4.10 BUILD_TYPE=Release RUN_IN_PLACE=0 USE_GETTEXT=1 USE_SOUND=1 USE_CURL=1 USE_FREETYPE=1 USE_LUAJIT=0 STATIC_SHAREDIR=/usr/share/minetest
16:47:01: INFO[main]: logfile = /home/dirk/.minetest/debug.txt
16:47:01: VERBOSE[main]: httpfetch_init: parallel_limit=8
16:47:01: INFO[main]: Message locale is now set to: LC_CTYPE=de_DE.utf8;LC_NUMERIC=C;LC_TIME=en_DK.utf8;LC_COLLATE=de_DE.utf8;LC_MONETARY=de_DE.utf8;LC_MESSAGES=de_DE.utf8;LC_PAPER=de_DE.utf8;LC_NAME=de_DE.utf8;LC_ADDRESS=de_DE.utf8;LC_TELEPHONE=de_DE.utf8;LC_MEASUREMENT=de_DE.utf8;LC_IDENTIFICATION=de_DE.utf8
Irrlicht log: Irrlicht Engine version 1.8.1
Irrlicht log: Linux 3.16.1-1-ARCH #1 SMP PREEMPT Thu Aug 14 07:40:19 CEST 2014 x86_64
Irrlicht log: Using renderer: OpenGL 3.3.0
Irrlicht log: GeForce 9600 GT/PCIe/SSE2: NVIDIA Corporation
Irrlicht log: OpenGL driver version is 1.2 or better.
Irrlicht log: GLSL version: 3.3
16:47:01: INFO[main]: text_height=22
16:47:01: INFO[main]: Searching worlds...
16:47:01: INFO[main]:   In /home/dirk/.minetest/worlds: 
16:47:01: INFO[main]: Spielwelt 
16:47:01: INFO[main]: 1 found.
16:47:01: INFO[main]: Waiting for other menus
16:47:01: INFO[main]: Waited for other menus
16:47:01: INFO[main]: Audio: Initializing...
16:47:01: INFO[main]: Audio: Vorbis extension NOT present
16:47:01: INFO[main]: Audio: Initialized: OpenAL 1.1 ALSOFT 1.16.0, using OpenAL Soft
16:47:01: INFO[main]: GUIEngine: Initializing Lua
16:47:01: VERBOSE[AsyncWorkerThread_0]: Loading and running script from /usr/share/minetest/builtin/init.lua
16:47:01: INFO[AsyncWorkerThread_0]: Initializing Asynchronous environment
16:47:01: VERBOSE[AsyncWorkerThread_1]: Loading and running script from /usr/share/minetest/builtin/init.lua
16:47:01: INFO[AsyncWorkerThread_1]: Initializing Asynchronous environment
16:47:01: VERBOSE[AsyncWorkerThread_2]: Loading and running script from /usr/share/minetest/builtin/init.lua
16:47:01: INFO[main]: SCRIPTAPI: Initialized main menu modules
16:47:01: VERBOSE[main]: Loading and running script from /usr/share/minetest/builtin/init.lua
16:47:01: INFO[AsyncWorkerThread_2]: Initializing Asynchronous environment
16:47:01: VERBOSE[AsyncWorkerThread_3]: Loading and running script from /usr/share/minetest/builtin/init.lua
16:47:01: INFO[AsyncWorkerThread_3]: Initializing Asynchronous environment
16:47:01: INFO[main]: Searching worlds...
16:47:01: INFO[main]:   In /home/dirk/.minetest/worlds: 
16:47:01: INFO[main]: Spielwelt 
16:47:01: INFO[main]: 1 found.
16:47:01: VERBOSE[main]: OpenALSoundManager::maintain(): 0 playing sounds, 0 sound names loaded
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.0.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.1.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.2.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.3.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.4.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.5.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.6.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.7.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.8.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.9.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /home/dirk/.minetest/sounds/main_menu.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.0.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.1.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.2.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.3.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.4.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.5.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.6.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.7.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.8.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.9.ogg for decoding
16:47:01: INFO[main]: Audio: Error opening /usr/share/minetest/sounds/main_menu.ogg for decoding
16:47:01: INFO[main]: OpenALSoundManager: "main_menu" not found.
16:47:05: INFO[main]: Audio: Deinitializing...
16:47:05: INFO[main]: Audio: Deinitialized.
16:47:05: INFO[main]: GUIEngine: Deinitializing scripting
16:47:05: INFO[main]: Searching worlds...
16:47:05: INFO[main]:   In /home/dirk/.minetest/worlds: 
16:47:05: INFO[main]: Spielwelt 
16:47:05: INFO[main]: 1 found.
16:47:05: INFO[main]: Updating configuration file: "/home/dirk/.minetest/minetest.conf"
16:47:05: INFO[main]: Skipping writing of /home/dirk/.minetest/minetest.conf because content wouldn't be modified
16:47:05: INFO[main]: Updating configuration file: "/home/dirk/.minetest/minetest.conf"
16:47:05: INFO[main]: Skipping writing of /home/dirk/.minetest/minetest.conf because content wouldn't be modified
16:47:05: VERBOSE[main]: httpfetch_cleanup: cleaning up
Weil es in so einem kleinen Code-Fenster ja doch eher schlecht lesbar ist, hier auf nopaste.info.

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Wuzzy » Post

Oh, huch. Das stimmt. Das geht ja tatsächlich nicht mehr. Jetzt merk ich auch bewusst, dass es nicht geht. xD

Da muss wohl seit 0.4.10 was kaputt gegangen sein. In 0.4.9 ging es noch.
Das riecht nach ’nem Bug.

Ich benutze auch GNU/Linux.

User avatar
PilzAdam
Member
Posts: 4026
Joined: Fri Jul 20, 2012 16:19
GitHub: PilzAdam
IRC: PilzAdam
Location: Germany

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by PilzAdam » Post

Wuzzy wrote:Oh, huch. Das stimmt. Das geht ja tatsächlich nicht mehr. Jetzt merk ich auch bewusst, dass es nicht geht. xD

Da muss wohl seit 0.4.10 was kaputt gegangen sein. In 0.4.9 ging es noch.
Das riecht nach ’nem Bug.

Ich benutze auch GNU/Linux.
:-/
Könnte jemand versuchen herauszufinden, welcher Commit das kaputt gemacht hat? Ich kann das momentan nicht selber testen.

User avatar
JPRuehmann
Member
Posts: 334
Joined: Fri Mar 21, 2014 21:40
Location: Germany
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by JPRuehmann » Post

Hallo bei mir funktioniert Deuts 1a.

Minetest 0.4.10-110-g5ca5630
Using Irrlicht 1.9.0
Build info: VER=0.4.10-110-g5ca5630 BUILD_TYPE=Release RUN_IN_PLACE=0 USE_GETTEXT=1 USE_SOUND=1 USE_CURL=1 USE_FREETYPE=1 USE_LUAJIT=1 STATIC_SHAREDIR=/usr/local/share/minetest

Ich benutze Kubuntu 14.04

Viel Glück.

User avatar
Casimir
Member
Posts: 1206
Joined: Fri Aug 03, 2012 16:59
GitHub: CasimirKaPazi

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Casimir » Post

Jetzt funktioniert es bei mir auch nicht mehr.
Die Einstellung selbst kommt an. Nur das Hauptmenü scheint das nicht zu merken.

Code: Select all

local language = minetest.setting_get("language")
print("Language = ".. language)

slspeek
New member
Posts: 2
Joined: Wed Oct 08, 2014 18:25
GitHub: slspeek
In-game: BasEnSteven

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by slspeek » Post


User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Linuxdirk » Post

*bump*

Bin ich der einzige hier, bei dem es nicht funktioniert, oder bin ich lediglich der einzige, den es stört, dass die Übersetzungsdateien zwar mitinstalliert wurden, aber keine Übersetzung stattfindet?

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Wuzzy » Post

Es ist wohl eher Zweiteres.
Unter 0.4.11 hat sich leider nichts gebessert. :-(

User avatar
Krock
Developer
Posts: 4649
Joined: Thu Oct 03, 2013 07:48
GitHub: SmallJoker
Location: Switzerland
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Krock » Post

Hier (auf Windows) werden nur ältere Teile der GUI übersetzt, alles neue ist auf Englisch.
Ich denke, man sollte einmal die Übersetzungsdateien auf den neusten Stand bringen.
Look, I programmed a bug for you. >> Mod Search Engine << - Mods by Krock - DuckDuckGo mod search bang: !mtmod <keyword here>


User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Wuzzy » Post

@Krock: Ich habe vor einigen Wochen mal die deutsche Übersetzung aktualiisert, seitdem gammelt der Pull Request auf GitHub herum. https://github.com/minetest/minetest/pull/1973

Grundsätzlich aber stimmt es schon: Es gibt immer noch einige Strings, die gar nicht übersetzt werden können, der größte Wermutstropfen sind allerdings Mods. Die jetzige »Lösung« mit intllib und Co. ist leider nicht gut genug (z.B. kein Support für Singular und Plural) und inkonsistent, Support seitens der Engine wäre besser.

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Linuxdirk » Post

Wuzzy wrote:Es gibt immer noch einige Strings, die gar nicht übersetzt werden können
Wenn es „einige Strings“ wären, könnte ich damit leben, und auf entsprechende Anpassungen im Code warten,oder sie selbst coden, und als Patch einreichen, und drauf hoffen, dass er auch angenommen wird.

… so wie es sich mir hier seit Anfang an darstellt, ist aber GAR NICHTS übersetzt, nicht ein einzelnes Wort an keiner einzigen Stelle, und sowohl hier in diesem Thread, als auch im englischsprachigen „Schwesterthread“, oder auf Reddit habe ich bisher eine klare Aussage herauslesen können, ob die Übersetzungfunktion einfach nur bei mir nicht geht, oder ob sie generell im Arsch ist … So langsam wird das echt frustrierend.
Wuzzy wrote:Support seitens der Engine wäre besser.
Es müssten einfach pauschal alle Strings, die irgendwo ausgegeben werden durch eine Funktion gejagt werden, die prüft, ob dieser String anhand der geladenen Übersetzungsdateien übersetzt werden kann, und zwar unabhängig, ob der String oder die Übersetzungsdatei von der Engine kommt, im Minetest-Code steckt, aus den default-Mods stammt, oder aus irgendeinem Subgame oder einer selbst-installierten Mod heraus angezeigt werden soll.

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Wuzzy » Post

Also noch mal zum Mitschreiben:
Es handelt sich vermutlich um einen Bug, der verhindert, dass die Übersetzung überhaupt geladen wird. Minetest ist grundsätzlich schon übersetzbar. Aber in der Vergangenheit muss es wohl eine Regression gegeben haben, die das ganze Übersetzungssystem lahmgelegt hat.
Und ja, ich kann deinen Bug voll reproduzieren, bei mir ist auch alles nur auf Englisch, statt auf Deutsch.
Ich kann deinen Frust schon gut verstehen.
Das Übersetzungssystem scheint bei Minetest bisher ohnehin nicht so wirklich ernst genommen zu sein. :-(

So wie es aussieht, wird wenigstens an der Behebung des Bugs halbwegs gearbeitet:
https://github.com/minetest/minetest/pull/2176

Hoffentlich tut sich da was.
Linuxdirk wrote: Es müssten einfach pauschal alle Strings, die irgendwo ausgegeben werden durch eine Funktion gejagt werden, die prüft, ob dieser String anhand der geladenen Übersetzungsdateien übersetzt werden kann, und zwar unabhängig, ob der String oder die Übersetzungsdatei von der Engine kommt, im Minetest-Code steckt, aus den default-Mods stammt, oder aus irgendeinem Subgame oder einer selbst-installierten Mod heraus angezeigt werden soll.
Nein, das ist grundsätzlich eine schlechte Idee. Du vergisst, dass natürliche Sprachen wie Deutsch oft kontextsensitiv sind. Das heißt, ein Wort oder ein Satz oder ein Ausdruck X hat nicht zwangsläufig eine einzige Bedeutung. Nehmen wir zum Beispiel das Wort »gehen«. Ich kann gehen, und zwar mit meinen Beinen. Teig kann auch gehen, aber damit ist ein anderer Vorgang gemeint. Andere Sprachen haben für die beiden Konzepte vielleicht verschiedene Wörter, also müssen Wörter, obwohl sie gleich im Deutschen sind, als seperate Strings betrachtet werden.

Bei einem vernünftigen Übersetzungssystem muss es also immer möglich sein, einen Kontext anzugeben. Gettext z.B. kann das, und steht im Übrigen auch nicht alleine damit da.

Und jetzt stell dir vor, es gibt in der Engine einen String, und einen anderen String in einer Mod, der aber zufällig im Englischen genau gleich zu dem String aus der Engine ist. Jedoch ist dieser String anders gemeint.

Zweitens halte ich es für eine noch schlechtere Idee, alle Strings aus allen Möglichen Quellen in eine einzige Funktion zu holen und in einer einheitlichen Datenbank abzugleichen. Mit diesem Modsystem ist aber eine einheitliche Datenbank schierer Wahnsinn, insbesondere, wenn man das Kontextproblem bedenkt. Mods können nach belieben installiert und wieder entfernt werden, und genau daran scheitert eine zentrale Übersetzungsdatei schon.

Jetzt einfach jeden beliebigen String, der aus einer Mod kommt, blind durch die Übersetzerfunktion zu jagen, und dann zu glauben, dass da was vernünftiges rauskommt, halte ich für naiv. Woher soll die Funktion denn bitte schön erkennen, welche Strings sie vielleicht gar nicht übersetzen soll? Es gibt einige Strings, die nur zum internen Gebrauch benutzt werden; sie dürfen überhaupt nicht übersetzt werden. Solche Strings kann man aber trotzdem ausgeben.

Außerdem lässt du vollkommen außer acht, dass Mods völlig serverseitig sind. Man muss also die Strings nicht nur einfach übersetzen, sondern man muss auch zusehen, wie die _übersetzten_ Strings zu den Clients kommen, und zwar für jeden Client bitteschön in der richtigen Sprache seperat.

Zum Thema Übersetzen von Mods habe ich bereits einen eigenen Thread aufgemacht: viewtopic.php?f=5&t=10031
Ganz durchdiskutiert wurde das m.M. noch nicht, es stehen immer noch Fragen im Raum.

Es gibt noch einige andere Probleme mit deinem naiven Ansatz, aber es sollte nun klar sein, dass es so einfach, wie du es dir vorstellst, leider nicht ist. Wenn du was lernen willst, schlage ich dir vor, mal die Anleitung von Gettext zu überfliegen. Nicht, weil ich meine, dass du unbegingt Gettext lernen solltest, sondern, weil in der Anleitung viel über Hintergründe zu lesen ist. Dann werden vielleicht einige deiner falschen Grundannahmen zu Staub zerfallen.

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Linuxdirk » Post

Wuzzy wrote:Das Übersetzungssystem scheint bei Minetest bisher ohnehin nicht so wirklich ernst genommen zu sein. :-(
Na ja, klar, die Entwicklung findet auf Englisch statt, die Entwickler sprechen alle Englisch, und die Sprache ist der kleinste gemeinsame Nenner. Ist ja auch erst mal richtig. Internationalen Erfolg, der auch immer von einer Lokalisierung oder mindestens einer Übersetzung abhängt kann man damit aber nicht einholen. Das ist zwar nicht das erklärte Ziel, aber dennoch … :)
Wuzzy wrote:Gettext z.B. kann das, und steht im Übrigen auch nicht alleine damit da.
Ich ging jetzt selbstverständlich von Gettext aus. Ich habe noch nie etwas anderes für Übersetzungen genutzt, weder in Software, noch in Webprojekten.
Wuzzy wrote:Und jetzt stell dir vor, es gibt in der Engine einen String, und einen anderen String in einer Mod, der aber zufällig im Englischen genau gleich zu dem String aus der Engine ist. Jedoch ist dieser String anders gemeint.
Gettext hat doch Domains, um solche Dinge auseinander zu halten. Jede Mod sollte Übersetzungen immer nur aus ihrer jeweiligen Domain erhalten, außer, der Modentwickler gibt explizit an, dass er was anderes haben will (gettext.textdomain(…) in Python z.B.)
Wuzzy wrote:Zweitens halte ich es für eine noch schlechtere Idee, alle Strings aus allen Möglichen Quellen in eine einzige Funktion zu holen und in einer einheitlichen Datenbank abzugleichen.
Ja, das was blöd formuliert. Letztendlich wollte ich damit lediglich ausdrücken, dass Minetest alle gefundenen Übersetzungen (inklusive der Domains) lädt, und alles mit entsprechenden „Metadaten“ durch eine Funktion jagt, die abgleicht, ob in einer der gefundenen Übersetzungen mit der entsprechenden Domain der entsprechende String vorhanden ist, und diesen dann entsprechend Ubersetzt ausgibt, unabhängig davon, von wo er kommt, und wohin er ausgegeben werden soll.
Wuzzy wrote:Woher soll die Funktion denn bitte schön erkennen, welche Strings sie vielleicht gar nicht übersetzen soll?
Daran, dass für sie in der entsprechenden Domain keine Übersetzung gefunden wurde, dann wird der unveränderte String ausgegeben.
Wuzzy wrote:Es gibt einige Strings, die nur zum internen Gebrauch benutzt werden; sie dürfen überhaupt nicht übersetzt werden. Solche Strings kann man aber trotzdem ausgeben.
Ja, und? :) Wenn im Namespace dafür keine Übersetzung gefunden wurde, ist das Problemlos. Außerdem sprichst du von zwei verschiedenen Dingen: Der internen Verwendung von Strings, und deren Ausgabe.
Wuzzy wrote:Außerdem lässt du vollkommen außer acht, dass Mods völlig serverseitig sind. Man muss also die Strings nicht nur einfach übersetzen, sondern man muss auch zusehen, wie die _übersetzten_ Strings zu den Clients kommen, und zwar für jeden Client bitteschön in der richtigen Sprache seperat.
Lokalisierung hat im Backend (zu dem auch irgendwie der Server gehört *g*) nichts verloren! Jegliche Lokalisierung findet lediglich im Frontend (… oder eben dem Client) statt, und ist nur kosmetischer Natur. Der Server sollte einfach alle Strings im Originalformat senden, und die Übersetzung geschieht nur im Client anhand der im Client eingestellten Sprache.

Ich kenne die Minetest-Entwicklung nun nicht gut genug. Wie läuft das eigentlich? Werden nur die Ausgaben der Mods an den Client gesendet, oder auch irgendwelche Daten? Wenn auch Daten gesendet werden, würde es in diesem Fall reichen, die .mo-Datei der Mod (oder deren Inhalt) mitzusenden.

Falls nicht, wäre der Weg andersherum vielleicht gangbar: Der Client sendet seine Sprachinformation an den Server, und dieser wählt anhand dieser den entsprechenden String aus (gettext.bindtextdomain(domain, localedir) in Python).
Wuzzy wrote:Es gibt noch einige andere Probleme mit deinem naiven Ansatz[…]
Ich würde es eher „einfachste Lösung“ nennen. Aber, dass ich seit Jahren schon Gettext nutze, ist vielleicht wirklich etwas untergegangen :)

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Wuzzy » Post


Lokalisierung hat im Backend (zu dem auch irgendwie der Server gehört *g*) nichts verloren! Jegliche Lokalisierung findet lediglich im Frontend (… oder eben dem Client) statt, und ist nur kosmetischer Natur. Der Server sollte einfach alle Strings im Originalformat senden, und die Übersetzung geschieht nur im Client anhand der im Client eingestellten Sprache.

Ich kenne die Minetest-Entwicklung nun nicht gut genug. Wie läuft das eigentlich? Werden nur die Ausgaben der Mods an den Client gesendet, oder auch irgendwelche Daten? Wenn auch Daten gesendet werden, würde es in diesem Fall reichen, die .mo-Datei der Mod (oder deren Inhalt) mitzusenden.

Falls nicht, wäre der Weg andersherum vielleicht gangbar: Der Client sendet seine Sprachinformation an den Server, und dieser wählt anhand dieser den entsprechenden String aus (gettext.bindtextdomain(domain, localedir) in Python).
Siehe viewtopic.php?f=5&t=10031

Die Idee mit den Daten wurde schon mal vorgeschlagen, es scheint also nicht so abwegig zu sein.

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Wuzzy » Post

Nochmal zurück zum Hauptproblem: Minetest übersetzt sich nicht, obwohl die Übersetzungsdateien alle da sind.

Ich bin jetzt endlich auf Version 0.4.12 umgestiegen.

Ich benutze dabei das Paket von Arch Linux, Paketversion 0.4.12-1.

Leider ist dort immer noch alles auf Englisch, aber nach den Paketdaten zu urteilen sind die deutschen Daten alle vorhanden.
Auch im Pause-Menü steht eindeutig »USE_GETTEXT=1«.

Mir ist aber etwas anderes interessantes aufgefallen: Bei meiner selbstkompilierten Version von Minetest funktioniert die Übersetzung! o_O

Außerdem ändert sich gar nichts (beim Minetestpaket von Arch Linux), wenn ich in minetest.conf diese Zeile hinzufüge:

Code: Select all

language=de
Meine Vermutung: Entweder stimmt was nicht mit dem Arch-Linux-Paket, denn zusammen mit Linuxdirk sind wir schon zu Zweit oder Minetest verhält sich einfach inkorrekt, wenn es systemweit (statt »run in place«) installiert wird.


Nachtrag:
Okay, ich habe gerade mein Eigenkompilat systemweit nach /usr/local installiert, da funktioniert Deutsch auch.
Damit kann ich meine zweite Vermutung wohl ausschließen. Da kommt glaube ich dann wohl nur noch ein Fehler im Arch-Linux-Paket in Betracht, denke ich.

User avatar
Casimir
Member
Posts: 1206
Joined: Fri Aug 03, 2012 16:59
GitHub: CasimirKaPazi

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Casimir » Post

Bei mir war die Übersetzung auch weg (auch Arch Linux). Aber eben habe ich Minetest noch mal frisch geklont und kompiliert, und da funktioniert es.

Edit: Wenn man in minetest.conf "language = DE" entfernt dann funktioniert Gettext.
Last edited by Casimir on Wed Mar 04, 2015 20:08, edited 1 time in total.

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Wuzzy » Post

Casimir, das liegt vermutlich daran, dass man das in Kleinbuchstaben schreiben muss.

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Linuxdirk » Post

Casimir wrote:Edit: Wenn man in minetest.conf "language = DE" entfernt dann funktioniert Gettext.
Weder großgeschrieben, noch kleingeschrieben, noch mit, noch ohne funktioniert es bei mir.

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by Wuzzy » Post

Funktioniert es jetzt in 0.4.13?

In meiner selbstkompilierten Version geht es, das Arch-Linux-Paket ist noch nicht da.

User avatar
lightonflux
Member
Posts: 384
Joined: Mon Nov 11, 2013 07:22
In-game: lof
Location: Germany

Re: Deutsche Lokalisierung unter Linux funktioniert hier nic

by lightonflux » Post

Debian 8 mit git version. Bei mir ist alles auf Deutsch.

Post Reply

Who is online

Users browsing this forum: No registered users and 7 guests